java继承
1.不要为了使用另一个类中的某一个方法去继承,比如demoB中不能有show2()方法,就不能去继承,很可能是兄弟关系而不是父子关系。
2.当成员变量与函数内变量重名时,如何调用成员变量。另外,子类有的成员变量不访问父类。
3.super
当子类成员变量和父类成员变量重名时,想访问父类的成员变量,用关键字super。
4.打印this 和 对象 都是对象的地址(若把this改成super 则会出错)
5.第4 的原因,t只创建子类对象,没有创建父类的对象,所以不能打印。但是this可以访问父类空间里的东西,因为子类持有父类空间的指向。
6.子类只能访问父类中除了private之外的 其他东西,可以通过父类非私有方法去访问父类私有成员。
7.问题:6中子类有没有继承父类的num?
有
8.6中num在内存里面的位置
内存加载的时候会先将父类进行加载
子类的内存空间中会持有一个super,这个super指向父类。
子类能使用的方法区空间至少两片。但是在堆中,能使用的空间只有一个,所以父类的属性在子类创建对象的堆的空间里都有。
凡是子类借过来的属性,都在子类的堆内存区中。
私有只是代表不能访问,不代表它不存储。
所谓的私有在内存里面只是一个数字标识在表示。
子类创建的堆里父类和子类各自的成员变量会有标识,重名不影响。
9.zi()里面会有一个默认的super(),存在一个默认的隐式函数,先执行父类的,再执行子类的。
super()代表父类空间构造函数。this()代表本类构造函数。
10.子类在执行构造函数时会把父类的东西拿过来
11.
12
13,父类的构造函数里面也有默认的super()
14.如果子类的构造函数里面有this()它有调用父类构造函数吗super()吗?
没有
15.继承的缺点
打破了封装性
16.final修饰 的变量不可修改
eg: final x = 5; 不能再将 x =7;
17.类内的构造代码块执行结果
18.一个对象在内存中的产生过程(6,7,8都是隐式的)(很重要,详情http://www.jczhijia.com/CoursePay/14865.html)