不是这样的。实例化子类的时候,因为有集成关键字,才会集成父类的相关属性,在创建实例的时候,由于代码是提前加载好的!加载子类代码的时候,父类代码也是加载了的!就会依据需要进行父类的属性的加载和创建。实例是一份数据存储而已,是按照子类的定义,存储的相应形式的数据。
1,实例化子类不会去自动实例化父类,因为父类有可能是抽象类,抽象类是不能被实例化的
2,不是获得父类的变量,而是子类自己的变量了,你可以创两个不一样的子类,父类的字段给不一样的值都可以,说明这个字段实在子类中单独实例化
类的继承只是一个定义方式,或者说是一种设计模式,恐怕你要加强面向对象概念性的学习
您好,你说的是语言层面上的,我是想知道,子类在实例化的时候是通过什么机制来拿到父类中的变量,是直接解析父类中的字段表集合吗?那就是new关键字的内部机制了。
我觉得你没有理解楼主的含义,回答的不准确,另外,
1、实例化子类的时候首先调用父类的构造函数
2、正如楼主所说,如果是通过指针指向各自父类,父类各自实例化,父类的字段也是不同的,你的证明没有任何意义。
根据目前理解回答:
类继承只是定义子类有哪些成员,在实例化的时候其实是实例化定义好的成员列表,下面代码父类构造器调用了this.print(),说明与子类是同一个this,即实例化的时候不分子类父类,是内存中的一份实例化数据:
abstract class C {
public C() {
this.print();
}
public abstract void print();
}
class B extends C {
private int x = 100;
public B(int x) {
this.x = x;
}
public void print() {
System.out.println("x=" + x);
}
}
public class TestJava {
public static void main(String[] args) {
C c = new B(10);
}
}
输出结果:0
PS:真正在JVM层的深入理解解释,需要继续阅读相关文章。