1. 继承
1.1 继承概述
但是我们将相同的类提取出来就会变成这个样子
让他们之间产生一个继承的关系
1.2 继承的好处和弊端
IS-A、HAS-A和USE-A关系
苹果是水果的一种可以使用继承
猫是动物的一种可以使用继承
猫和狗不具备继承关系,不可以使用继承
1.3 继承中遍变量的访问特点
1.4 super
1.5 继承中构造构造方法的访问特点
1.6 继承中成员方法的访问特点
1.7 super内存图
main方法加载到栈内存
Zi z 加载到main方法中
在堆内存中new一片空间,加载成员变量,Zi z指向001。
将Zi方法加载到栈内存中,然后执行Zi的构造方法,但是执行子类构造方法的时候默认方法中是带super()方法的,所以要先访问父类的构造方法。
父类,先将父类的成员变量(它是子类的父类所以它的地址也是001)加载到堆内存空间,然后将父类的构造方法加载到栈内存,执行构造方法,输出,执行完毕后从栈内存消失。
父类的构造方法访问完毕后,接着访问子类的构造方法,输出,然后在栈内存中消失。
接着是z.show(),调用show()方法,在栈内存中加载show,调用者是z(001),this就是z(001)
int age = 30;.,在栈内存加载。
直接输出age
这次输出的是this.age,而this的地址值是001,所以输出的是20
super.age,同过调用者找到super(父类),从super(父类)找到age,所以输出40。show方法执行完毕从扎内存消失。
接着调用method();方法,但是在子类中并没有。
子类没有method方法,所以我们到父类中找,父类中有method()方法最所以我们调用父类的method方法。
所以执行的是父类的method方法,输出完毕后在栈内存中消失。