目录

Java面向对象编程

1. 面向对象编程概述

类、对象、方法

类Class

对象(Object)

类和对象的关系

面向对象的三大特性

封装

继承

多态


Java面向对象编程

1. 面向对象编程概述

面向对象编程(Object Oriented Programming) 简称OOP,是当主流的编程思想。

是创建解决问题的对象,赋予对象对应的行为和特征,让这些对象互相配合(调用对象的方法)完成。 这种思想致力于将计算机中的世界,描述的和现实中一致的思想,把所有事情交给相应的对象完成,侧重于如何创建解决问题的对象。

2.类、对象、方法

类Class

具有相同属性和行为的对象的集合,称为"一类"。可以理解为模板。 属性:描述对象的特征,在程序中,通过定义变量的形式表现属性。 行为(方法):描述对象的动作,在程序中,通过定义方法的形式表现行为。 在程序中,通过定义一个class来定义一个类。在类中定义变量描述属性,定义方法描述行为。

定义类

[修饰符] class [类名]{         //属性(变量)         //行为(方法)

[修饰符] [返回值类型] [方法名]( [参数]或[空] ){ }

}

 /**定义一个书(Book)类,含有:*属性:编号(id),书名(title),作者(author),...;*行为(方法):添加(addBook),删除(deleteBook),...;**/public class Book{//定义书的属性int id;//编号String title;//书名String author;//作者//定义方法public void addBook(){//定义添加书籍的方法(行为)system.out.println("添加成功");}public String deleteBook(int id){//定义删除书籍的方法(根据id删除)system.out.println("删除成功");}...}

对象(Object)

对象是类的一个实例,是类的具体表现。

创建对象

类名 对象名 = new 构造方法([参数]); 创建的对象,通过"."操作符访问类中的非私有属性和方法。

 /*
* 创建管理类(程序入口),该类可以创建书类的对象
* */public class Manage{public static void main(String args[]){//创建书类的对象book1Book book1 = new Book();//给对象的属性赋值book1.id = 1;book1.title = "道德经";//通过对象调用Book类里的方法book1.addBook();book1.deleteBook(1);}}

类和对象的关系

对象是类的具体表现,类是对象的集合(模板)。 如包饺子的模具就是一个类,每次用这个模具包出来的饺子都是一个一个对象。 先定义类,才能通过该类创建对象。

3.面向对象的三大特性

封装

使用private关键字对属性进行修饰。再对外提供一组公开的get/set方法用于对该属性读取或赋值。可以防止除自身类之外的地方对该属性就行访问,这样做可以保护关键属性,隐藏类内部的实现细节。

步骤

  • 先创建一个类,编写成员变量,给成员变量添加private修饰符
public class Book {private int id;private String title;private String author;
}
  • 单击右键选择Generate--->Getters and Setters--->选择要封装的属性

    或使用快捷键Alt+Insert(或Fn+Alt+Insert)--->Getters and Setters--->选择要封装的属性

  • 封装成功:

    public class Book {private int id;private String title;private String author;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}

    }

  • setXxx()用于给私有的成员变量赋值。

  • getXxx()用于读取私有的成员变量。

  • 封装后,无法通过“.”访问属性,只能通过get/set方法。

继承

类A可以通过extends关键字继承类B。

语法:class 类A extends 类B{}

//父类A
public class A{
}//子类B继承父类A
public class B extends A{
}

类A称为子类、派生类、衍生类、subClass 类B称为父类、根类、超类、superClass 继承后,子类可以访问父类中非私有(没有被private修饰的内容)的属性和方法。 不同的子类中如果有相同的代码,都可以把它们提出来保存到父类中,从而减少子类中的代码冗余。

特点

  • 如果多个类之中有相同或类似的代码,可以将这些代码提取出来定义在一个公共的类中,这个类就是父类。再让那些类就继承这个父类,那些类就是子类,这样就能减少子类中的重复代码。

  • 子类对象可以直接访问父类中非私有(不用private修饰)的属性和方法。

  • 子类可以对父类中的方法进行扩展或覆盖,这称为方法重写。重写后,子类对象再调用该方法时,执行的是重写后的内容。

  • Java中是单继承。一个子类只能extends一个父类,一个父类可以有很多个子类。

  • Java中可以多重继承。类A可以继承类B,类B可以继承类C,这时类A既是类B的子类,也可以称为类C的子类,可以访问类B与类C中非私有的成员。

  • 任何类都是Object类的子类。

  • 在创建子类对象时,会先执行父类中相应的构造方法

方法重写(override)

当子类继承父类后,可以对父类中非私有的方法进行扩展或覆盖,这个过程称为方法重写。

//父类Apublic class A {// 父类方法father()public void father(){System.out.println("父类方法");}
}//子类public class B extends A {//重写方法father()@Overridepublic void father() {System.out.println("子类重写方法");}public static void main(String[] args) {A a=new A();   //新建父类对象B b=new B();   //新建子类对象A b1=new B();//新建对象new B()只能创建只能比类型A小a.father();b.father();b1.father();}
}//输出:父类方法子类重写方法子类重写方法

方法重写要求

  • 方法名、参数列表、返回值必须和父类一致。

  • 访问权限不能比父类更严格(访问修饰符的范围要么一致要么更大)。

  • 不能抛出比父类更大的异常。

方法重载(overload)

  • 在一个类中,如果多个方法的方法名相同,参数列表不同时,这些方法称为重载的方法。

  • 重载用于在一个类中,某个方法在不同的条件下,执行不同的内容。

public class Main {public static void main(String[] args) {Main m=new Main();m.father();//无参无返回值m.father(10);System.out.println(m.father("重载"));}public void father(){System.out.println("无参无返回值");}//重载public void father(int i){System.out.println("有参为int类型:"+i+",无返回值");}//重载public  String father(String str){return "有参为String类型:"+str+",有返回值为String类型";}
}
//输出:无参无返回值有参为int类型:10,无返回值有参为String类型:重载,有返回值为String类型

方法重载要求

  • 方法名相同。

  • 参数列表(参数类型和数量)不同。

  • 与返回值无关。

多态

概念

  • 多态就是子类的对象指向父类的引用(子类对象使用父类变量接收,即向上转型)。

  • 父类 变量 = new 子类();

多态的应用

  • 当某个方法的参数为父类变量时,可以传递一个子类对象。这样就能在传递不同子类对象时,执行不同的方法。如要调用动物发出叫声的方法,参数为猫,输出喵喵叫,参数为狗,输出汪汪叫。不用多态,需要写多个重载的方法,参数为猫或狗的具体类型。使用多态,只需一个方法,参数为动物类型,动物类中定义一个叫的方法,让猫和狗继承这个动物类,重写叫的方法。这时调用动物发出叫声的方法时,就会根据实际的参数,表示不同的结果。

多态的实现条件

  • 在继承关系中。

  • 子类需要重写父类中的方法。

  • 父类的引用指向子类的对象(向上转型)。

华清远见重庆中心-java面向对象阶段技术总结相关推荐

  1. 华清远见-重庆中心-JAVA面向对象阶段技术总结

    华清远见-重庆中心-JAVA面向对象阶段技术总结 面向对象和面向过程的编程思想 面向对象(OOP) 通过创建(new)对象,赋予对象对应的行为和特征,让这些对象相互配合来解决问题 面向过程(POP) ...

  2. 华清远见重庆中心—JAVA面向对象阶段技术总结/个人总结

    课后练习回顾,疑难重点总结(二) 目录 课后练习回顾,疑难重点总结(二) 面向对象习题脉络梳理 1.模拟双色球中奖(Java基础补充) 2.模拟"电子宠物"(构造方法的应用) 小结 ...

  3. 华清远见-重庆中心-JAVA面向对象阶段技术总结/知识点梳理/个人总结

    文章目录 面向对象 方法 概念 如何调用方法 通过类名调用 Math类 通过对象调用 在同一个类中,方法A调用方法B 自定义方法 方法的分类 总结 两种编程思想 面向过程编程 面向对象编程 不同思想处 ...

  4. 华清远见重庆中心——Java面向对象阶段技术总结/个人总结

    个人总结 在这一周学习中比较让我困惑的是: 我跟着老师学习的时候能很好的理解,但是自己独立完成作业的时候就会磕磕碰碰的,思路不够清晰,并且不乏存在因为粗心犯的错误而导致进度卡壳的时刻(例如循环嵌套时位 ...

  5. 华清远见-重庆中心-JAVA面向对象阶段技术总结:

    对象和类: 对象object: 某个类的具体实例. 类class: 是拥有相同属性和行为的对象的集合,设类的模板. 定义类: 修饰符 class 类名{//属性:定义变量//行为:定义方法 } 创建对 ...

  6. 华清远见- 重庆中心-JAVA面向对象阶段技术总结

    什么是面向对象 Java 是面向对象的编程语言,对象就是面向对象程序设计的核心.所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念.对象 ...

  7. 华清远见-重庆中心-JAVA基础阶段技术总结

    系列文章目录 第一章 华清远见--重庆中心-JAVA基础阶段技术总结 第二章 文章目录 系列文章目录 文章目录 前言 一.关于java 1.发展历程 2.编程开发 3.java架构 4.java的特点 ...

  8. 华清远见-重庆中心-JAVA基础阶段技术总结/知识点梳理/个人总结/关于JAVA技术的解析(看法)/面试题解析

    Java基础知识 概述 什么是java:1.是边编译边解释的面向对象的编程语言. 2.java语言是1995年发布的,发布语言公司是:Sun 3.下载安装Java时从Oracle官网下载,最好下载LT ...

  9. 华清远见重庆中心—JAVA基础阶段技术总结/个人总结

    文章目录 Java基础知识 概述 Java程序运行过程 Java的分类 Java为什么流行 Java能够跨平台运行的原理 JDK和JRE 第一个Java程序 Java程序的运行流程 集成开发环境IDE ...

最新文章

  1. saiku执行过程代码跟踪
  2. java数组与对象例题,Java的字符串和数组是以对象的形式出现的。()
  3. 为HTML5的未来制定学习计划
  4. JQuery环境配置
  5. (译)删除未使用的前端代码
  6. CondenserDotNet - 使用 Kestrel 和 Consul 的 API 反向代理库!
  7. asp.net中获得客户端的IP地址
  8. asp.net后台管理系统-登陆模块-路由权限控制_1
  9. chrome 插件下载
  10. 区块链溯源系统架构---区块链工作笔记002
  11. 常用 Git 命令清单(阮一峰)
  12. 使用 SpiritManager 类管理在 XNA 游戏中的精灵(十四)
  13. ubuntu搭建STM32开发环境
  14. 中国计算机学会推荐国际学术会议和期刊目录(2019,最新)
  15. CSR蓝牙开发调试经验
  16. Elasticsearch 分布式搜索引擎 -- 自动补全(拼音分词器、自定义分词器、自动补全查询、实现搜索框自动补全)
  17. android 多个fragment切换报错Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f0800f
  18. U811.1接口EAI系列之五--材料出库--VB语言
  19. 天天模拟器显示获取服务器失败,天天模拟器无法联网怎么办-天天模拟器不能上网的解决方法 - 河东软件园...
  20. git的一些基础与常用命令

热门文章

  1. linux基础56——uniq
  2. Java jQuery
  3. c#调用oracle存储过程,c#调用oracle存储过程
  4. Linux下使用ClamAV病毒查杀
  5. java发送邮件到qq邮箱_Java利用javax.mail发送邮件至QQ邮箱
  6. 文科本二计算机类大学排名,全国二本大学排名文科及分数线
  7. 前端性能分析 Chrome Dev Tools 之 Performance
  8. 利用Python识别txt文本并根据其内容进行文件分类
  9. FS2114恒流模式的PWM升压IC,内置过温、关断、欠压、过流保护
  10. 写字楼价格大跌,摩天大楼面临危机