一、继承的定义
继承是面向对象编程(OOP)的一个核心概念,它允许我们根据一个已存在的类(称为父类或基类)来定义一个新的类(称为子类或派生类)。
子类继承父类的所有属性和方法(除了那些被标记为private
的属性和方法,因为private
修饰的属性和方法是不可见的,只能被其所在的类访问)。
子类还可以拥有自己独有的属性和方法,以及重写(Override)或覆盖父类中的方法。
主要是为了实现代码的复用!
二、继承的特点
抽取父类的核心:
1、共性内容的抽取;
2、子类是父类的一种。
【注意】:
子类只能访问父类中非私有的成员。
三、子类能继承父类中的哪些内容?
3-1、父类的构造方法不能被子类继承
3-2、子类能继承父类的成员变量
父类中私有的成员变量,子类能继承,但是不能访问。只能用get/set方法使用!
继承的内存图
3-3、父类中成员方法的继承(虚方法表)
子类调用一个方法的时候:
1、若是虚方法,先在虚方发表中去查找;
2、不是虚方法,先在自己的类中查找对应的方法,没有,依次到各级父类中查找成员方法!
1、内存图分析
2、内存分析工具
四、继承结构的语法特点
4-1、继承中,成员变量的访问特点
就近原则。
super
关键字在Java中主要用于直接父类,它不能直接用来访问更远的祖先类(如Ye
)的变量!!!加了this关键字,不会在本类的方法中找,直接在本类的成员变量中查找!
小结:
4-2、继承中:成员方法的访问特点
- 直接调用满足就近原则:谁离我近,我就用谁
- super调用,直接访问父类
1、方法的重写
当父类的方法不能满足子类现在的需求时,需要进行方法重写。
2、方法重写的本质
3、方法重写的注意事项
4、示例
需要用到父类的方法中的代码,可以用super关键字。
5、小结
4-3、继承中:构造方法的访问特点
- 父类中的构造方法不会被子类继承。
- 子类中所有的构造方法默认先访问父类中的无参构造,再执行自己。
小结:
五、this、super使用总结
5-1、this关键字
理解为一个变量(局部变量),表示当前方法调用者的地址值;
5-2、super关键字
代表父类存储空间。
5-3、this VS super
示例: