- Java code
class Animal{ String color="red"; Animal(){ print(); color="black"; } void print(){ System.out.println("animal color is "+color); }}class Cat extends Animal{ String color="yellow"; Cat(){ print(); super.print(); } void print(){ System.out.println("cat color is "+color); } public static void main(String[] args){ new Cat(); }}
结果是:
cat color is null
cat color is yellow
animal color is black
疑问:
1.当子类构造函数去调用父类构造函数时,如果父类构造函数中调用的成员函数被子类覆盖过,那么就用子类?
2.为什么是null? 显示初始化不是优先于构造函数么?当构造函数启动时,成员变量不是已经被显示初始化了么?
------解决方案--------------------