08、三大特性
1、封装
概念: 尽可能隐藏对象的内部实现细节,控制对象的修改及访问的权限。
访问修饰符: private(可将属性修饰为私有,仅本类可见)



2、继承
程序中的继承,是类与类之间特征和行为的一种赠与或获得。
两个类之间的继承关系,必须满足“is a”的关系。
可根据程序需要使用到的多个具体类,进行共性抽取,进而定义父类
1、语法:
class 子类 extends 父类{} // 定义子类时,显示继承父类
2、应用:
产生继承关系之后,子类可以使用父类中的属性和方法,也可定义子类独有的属性和方法。
3、好处:
既提高代码的复用性,又提高代码的可扩展性。
4、特点:
Java为单继承,一个类只能有一个直接父类,但可以多级继承,属性和方法逐级叠加。
5、不可继承:
构造方法:
类中的构造方法,只负责创建本类对象,不可继承。
private修饰的属性和方法:
访问修饰符的一种,仅本类可见。
父子类不在同一个package中时,default修饰的属性和方法:
访问修饰符的一种,仅同包可见。

3、访问修饰符

4、方法重写
当父类提供的方法无法满足子类需求时,可在子类中定义和父类相同的方法进行重写(Override) 。
方法重写原则:
方法名称、参数列表、返回值类型必须与父类相同。
访问修饰符可与父类相同或是比父类更宽泛。
方法重写的执行:
子类重写父类方法后,调用时优先执行子类重写后的方法。
5、super关键字
在子类中,可直接访问从父类继承到的属性和方法,但如果父子类的属性或方法存在重名(属性遮蔽、方法重写)时,需要加以区分,才可专项访问。
1、super访问方法

2、super访问属性

6、继承中的对象创建
1、在具有继承关系的对象创建中,构建子类对象会先构建父类对象。
2、由父类的共性内容,叠加子类的独有内容,组合成完整的子类对象。


7、super调用父类构造方法
1、super调用父类无参构造

2、superi调用父类有参构造

8、this与super
super关键字的第一种用法:
在子类的方法中使用“super.”的形式访问父类的属性和方法。
例如: super.父类属性、super.父类方法();
super关键字的第二种用法:
在子类的构造方法的首行,使用“super()”或“super(实参)”,调用父类构造方法。
注意:
如果子类构造方法中,没有显示定义super()或super(实参),则默认提供super()。
同一个子类构造方法中,super()、this()不可同时存在。

9、多态
9.1、生活中的多态
1、生活中的多态是指“客观事物在人脑中的主观反应”。
2、主观意识上的类别与客观存在的对象具有“is a”关系时,即形成多态。

9.2、程序中的多态
概念: 父类引用指向子类对象,从而产生多种形态。
二者具有直接或间接的继承关系时,父类引用可指向子类对象,即形成多态。
父类引用仅可调用父类所声明的属性和方法,不可调用子类独有的属性和方法。
子类重写了父类中的方法,执行子类中重写后的方法,否则执行父类中的方法。

9.3、多态的应用
1、使用父类作为方法形参实现多态,使方法参数的类型更为宽泛。
2、使用父类作为方法返回值实现多态,使方法可以返回不同子类对象。

9.4、向上转型(装箱)

9.5、向下转型(拆箱)

9.6、类型转换异常

9.7、instanceof关键字
向下转型前,应判断引用中的对象真实类型,保证类型转换的正确性。
语法: 父类引用 instanceof 类型 // 返回boolean类型结果

9.8、总结
多态的两种应用场景:
使用父类作为方法形参,实现多态。
调用方法时,可传递的实参类型包括: 本类型对象+其所有的子类对象。
使用父类作为方法返回值,实现多态。
调用方法后,可得到的结果类型包括: 本类型对象+其所有的子类对象。
多态的作用:
屏蔽子类间的差异。
灵活、耦合度低。

浙公网安备 33010602011771号