三大特性
封装
尽可能隐藏对象的内部实现细节,控制对象的修改及访问的权限
使用访问修饰符private来达到隐藏的目的。
规范使用Get/set函数时不要采取任何修改
继承
类与类之间的特征与行为的一种赠与或获得。两个类之间的继承关系,必须满足”is a”的关系。(例:cat is an animal)
父类:功能越精细,重合点越多,越接近直接父类,功能越粗略,重合点越少,越接近Object类(万物皆对象概念)
父类抽取:可根据程序许使用到的多个具体类,进行共性抽取,进而定义父类
快捷键:Ctrl + T 查看父类
语法: class 子类 extends 父类{ } // 定义子类时,显示继承父类
应用:用于继承父类公开的属性和方法,也可自定义子类独有的属性和方法。
优点:即提高代码的复用性,又提高代码的可扩展性。
Java为单继承,一个类只能有一个直接父类,但是可以多级继承,属性、方法逐级叠加。
不可继承:构造方法,private修饰的属性和方法,,父子类不在同一个package中时,default修饰的属性和方法(访问修饰符的一种,仅同包可见)
访问修饰符
快捷键:ctrl + shift + o 自动导包
方法的重写/覆盖:当父类提供的1方法无法满足子类需求时可在子类中定义和父类相同的方法进行重写(Override)。
方法重写的原则方法名称参数列表,返回值类型必须与父类相同,访问修饰符相同或比父类更宽泛(多态的体现,即相同方法的不同表现)
方法重写的执行:子类重写父类方法后,调用时优先调用子类重写的方法
重载:父类方法的参数类型不同即重载使方法更加灵活。
super关键字
super关键字可以在子类中访问父类的方法
使用无参构造函数时,super关键字可以调用父类的构造函数
创建子类对象时,先构建父类对象,如果super没有显示书写,则隐式存与构造方法首行
!!!!this与super不同时存在与一个构造方法中。
多态
主观意识上的类别与客观存在对象具有“ is a ” 关系时,即形成多态。
概念:父类引用指向子类对象,从而产生多种形态。
二者具有直接或间接的继承关系时,父类引用可指向子类对象,即形成多态,父类引用仅可调用父类所声明的属性和方法,不可调用子类独有的属性和方法。
实际运行过程中,依旧遵循重写原则,如果子类重写父类中的方法,执行子类中重写后的方法,否则执行父类中的方法。
多态的应用:方法重载可以解决接收不同对象参数的问题,但其缺点也比较明显。(降低耦合性)
多态的应用:
场景一:使用父类作为方法形参实现多态,使方法参数的类型更为宽泛
场景二:使用父类作为返回值实现多态,使方法可以返回不同子类对象。
// 多态一
场景二:
装箱
向上转型
父类引用中保存真实子类对象,称为向上转型(即多态核心概念)
注意:仅可调用Animal中锁声明的属性和方法。
拆箱
向下转型
将父类引用的真实子类对象,强转回子类本身类型,称为向下转型。
注意,只有转换回子类真实类型,才可调用子类独有的属性和方法。
类型转换异常,向下转型时,如果父类引用中的子类对象类型和目标类型不匹配,则会发生转换异常
Instanceof关键字
用来判断引用中对象的真实类型,保证类型转换的正确性,
语法 : 父类引用 instanceof 类型 // 返回boolean类型结果
例: animal a = new Cat(); // 将cat实例化为动物
If(a instanceof Cat) { // instanceof关键字判断引用对象类型是否为真实类型
Cat cat = (Cat) a; // 强制转换回本身类型
cat.方法; // 调用cat的方法
思维导图 :https://www.processon.com/view/link/5f200d8f5653bb7fd257d1a2
源码见博客文件资源。