首先,创建子类对象的时候,父类对象没有被创建,但是父类被初始化了,因为子类构造函数的第一句如果你不指定就会默认是super();,所以这时候子类继承父类时采用的是类似代码复制的方法,子类继承的父类的所有的属性方法都是在子类自己中的,所以创建子类对象不需要创建父类对象,但是需要父类初始化!
其次,静态函数不能用super的问题!虚拟机在类加载的第一步会对静态初始化块、静态成员变量、静态方法进行一次初始化,这时候,还没有调用子类的构造函数,所以说这时候还没有调用super();,所以这时候父类还没有被初始化,父类这时候是不存在的,所以没有办法调用父类的东西!
解释得有些粗糙,我自己其实也不是很明白,初学者大概这么理解吧!{:3_47:}与君共勉 |