面向对象
面向对象
三个字形容面向对象思想:指挥者。
封装
封装目的
隐藏事物的属性和具体实现方式,对外提供公共的访问方式。
封装的好处
提高了安全性
隐藏了事物的实现细节
提高代码的复用性
封装的原则
隐藏事物的属性
隐藏事物的实现细节
对外提供公共的访问方式
private关键字
private:私有的
可以修饰的内容:成员变量、成员方法、内部类
修饰之后的后果:只能在本类中访问,在其他类中不可以访问
注:private只是封装其中一个体现,封装还可以通过其他方式完成
getter和setter
当属性被私有化,外界无法直接访问,则需要通过公共的访问方式,让外界可以间接来访问属性。
行业一般规定:get获取属性值,set设置属性值。
this关键字
this:表示当前类型当前对象的引用,哪个来调用this所在的方法,this就代表哪个对象。
作用:可以区分局部变量和成员变量,当变量没有this修饰,则遵循就近原则。
就近原则:当访问某个变量名的时候,会优先寻找最近的访问变量名的定义,如果没有找到就去更远的地方寻找。
当局部变量和成员变量重名的时候,一定是先试用局部变量定义的变量,如果没有,才会使用成员变量。
继承
继承的概述
让类和类直接产生关系,子父类的关系
父类:被继承的类 又可称:超类、基类
子类:用于继承的类 又可称:派生类
extens关键字
extends:扩展、增加、继承
继承的好处
提高了代码的复用性
提高了代码的可维护性
是多态的前提
继承的弊端
提高了代码的耦合性(关联性)
耦合性:事物与事物之间的依赖关系,互相影响的程度
注意:
开发原则:高内聚,低耦合
高内聚:一个对象自己可以完成各种事
低耦合:每个类的代码减少依赖关系
继承的注意事项
父类中私有成员(属性、方法)不能被继承
父类中的构造方法不能被继承
super关键字
代表的父类的引用
重写
在子父类中的方法名相同,参数列表相同,与返回值有关(相同)。
可以用@Override来验证子类中相同方法名是否进行了重写。
java中继承特点
Java支持单继承,不支持多继承,但支持多层继承。
多态
多态的概述
1.多态:事物的多种形态
2.对象的多态性:同一对象,可能具有不同的名称,同一对象,有着不同的类型的引用指向它。本质:同一物体有着不同的名称和描述。
3.类型的多态性:同一类型,可能具有不同的子类实现,同一个引用,有着不同的对象的实现。本质:同一个名字和描述,可以在不同的实现场景有着不同的真实实现。
4.多态实现的前提
要有子父类的继承,(实现)关系
父类的引用指向子类的对象
在多态中访问特点
1.成员变量:编译看左边,执行看左边
2.成员方法:编译看左边,执行看右边
3.静态成员:编译看左边,执行看左边
向上向下转型
1.向上转型:子类提升成父类
格式:同多态定义
本质:缩小了对象本身的访问范围,减少了访问权限(只限于父类的定义的内容)
2.向下转型:恢复成子类
格式:子类类型 引用变量 = (子类类型)分类类型的引用
本质:恢复了子类类型原有的访问权限
多态的好处
1.提高代码的可扩展性
2.在方法的参数列表中,可以定义父类类型的引用,将来在调用的时候,所有子类类型的对象,都可以作为方法的实际参数
3.不在方法的参数列表中,在普通的方法中,使用父类的类型指向子类对象,也可以提高代码的扩展性。对象来源非常广泛,不仅仅是new出来的,(还可以通过反射获取,通过文件读取,还可能是网络传输),在写代码的编译阶段,无法知道对象具体的子类类型,使用父类类型的引用,操作不知道的子类类型的对象。