看了前辈的博客,觉得这两点说的精辟:子类构造方法必须要调用父类的某个构造方法;被子类调用的父类构造方法在父类中必须是存在的。
上篇的例子有一点不明白,子类继承了父类的成员变量,父类的构造函数里引用了该成员变量,而子类又调用了父类的这个构造函数,那么是否对该成员变量进行操作呢?
class Usebefore {
String str1;
public Usebefore() {
System.out.println(".....default super constructor...1...........");
}
public Usebefore(String get1){
str1=get1;
System.out.println(str1+".......................注意这条语句的执行结果");
System.out.println(".....有参数constructor...1...........");
}
}
public class Use extends Usebefore{
public Use() {
System.out.println(".....default super constructor...2...........");
}
public Use(String get2){
super(" 调用父类有参constructor");
str1=get2;
System.out.println(str1);
}
public static void main(String args[]){
Use use=new Use();
use=new Use("get2");
}
}
结果
.....default super constructor...1...........
.....default super constructor...2...........
调用父类有参constructor.......................注意这条语句的执行结果
.....有参数constructor...1...........
get2
可以看到调用父类有参构造函数时,有一句话并没有执行,而且,连换行都没有执行。究竟是为什么呢?可惜俺不知道,知道会补上的。