日期:2014-05-20  浏览次数:20717 次

考考你对super的理解(高手进进进)
A. class A { } 
  class B extends A { } 
B. class A { } 
  class B extends A { B( ) {} } 
C. class A { A( ) { } } 
  class B { public B( ) {} } 
D. class Z { public Z(int) {} } 
  class A extends Z { } 

在不用软件的情况下你知道上面哪个会编译错误吗? 为什么


------解决方案--------------------
D. 没有缺省构造函数。
------解决方案--------------------
D.

创建一个子类的对象实例的时候,必先调用父类的无参数的构造函数(默认构造函数)
D中父类的是 public Z(int),子类将找不到无参数的构造函数,编译则会出错.

加个SUPER(int);就好了


------解决方案--------------------
加上super(int);恐怕红得更厉害喵~~``
------解决方案--------------------
肯定是d,子类得调用父类无参构造器,若父类中已经有有参构造器,则不会自动生成无参构造其