Java--Inheritance constructor继承中的构造方法问题(二)
看了前辈的博客,觉得这两点说的精辟:子类构造方法必须要调用父类的某个构造方法;被子类调用的父类构造方法在父类中必须是存在的。
上篇的例子有一点不明白,子类继承了父类的成员变量,父类的构造函数里引用了该成员变量,而子类又调用了父类的这个构造函数,那么是否对该成员变量进行操作呢?
1 class Usebefore { 2 String str1; 3 public Usebefore() { 4 System.out.println(".....default super constructor...1..........."); 5 } 6 public Usebefore(String get1){ 7 str1=get1; 8 System.out.println(str1+".......................注意这条语句的执行结果"); 9 System.out.println(".....有参数constructor...1..........."); 10 } 11 } 12 public class Use extends Usebefore{ 13 public Use() { 14 System.out.println(".....default super constructor...2..........."); 15 } 16 public Use(String get2){ 17 super(" 调用父类有参constructor"); 18 str1=get2; 19 System.out.println(str1); 20 } 21 public static void main(String args[]){ 22 Use use=new Use(); 23 use=new Use("get2"); 24 } 25 }
结果
.....default super constructor...1........... .....default super constructor...2........... 调用父类有参constructor.......................注意这条语句的执行结果 .....有参数constructor...1........... get2
可以看到调用父类有参构造函数时,有一句话并没有执行,而且,连换行都没有执行。究竟是为什么呢?可惜俺不知道,知道会补上的。
贵有恒何必三更眠五更起,最无益只怕一日曝十日寒。