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

父类的构造函数到底能不能被继承???
class father
{
  public father(){System.out.print("father");}
}

class son extends father
{
  public static void main(String args[])
{
  son s1= new son();
}
}

不管有没有定义构造函数都会输出 father 
不是说构造器不会被继承吗???求救 - -。


------解决方案--------------------
构造函数没有继承的概念,只不过构造一个子类的对象时,会先构造一个父类的对象(实例),这个在c++中表现最明显。


先构造一个父类的对象就得调用父类的构造函数。
------解决方案--------------------
继承中的构造规则:
1.子类的构造中必须调用父类的构造方法。
2.子类可以再自己的构造方法中使用super(参数列表)调用父类的构造方法(注意:this(参数列表):
调 用本类的自己的其他构造方法),如果要调用super()这必须写在前面;
3.如果子类的构造方法中没有显示的调用父类的构造方法,这系统默认调用父类无参数的构造方法

4.如果子类构造方法中既没有显示的调用父类的构造方法,而且父类中又没有无参数的构造方法,这编译出错!!!!!

------解决方案--------------------
看看class的加载机制就明白的
构造器是不会被继承的,只能做现实调用,就是楼上说的关键字super()