public class aa
{
aa()
{
System.out.println("aa的构造函数");
}
}
class bb extends aa
{
bb()
{ super();
System.out.println("bb的构造函数");
}
public static void main(String args[])
{
bb t=new bb();
}
}/*********************************************************************************
看了好多的书都说:"当你创建一个子类的实例时,首先会调用父类的构造函数,再调用自身的构造函数"
像我上面的这个程序,如果按书上所说应该输出:
aa的构造函数
aa的构造函数
bb的构造函数
可是却输出了这样意想不到的结果如下:
aa的构造函数
bb的构造函数
**********************************************************************************/
{
aa()
{
System.out.println("aa的构造函数");
}
}
class bb extends aa
{
bb()
{ super();
System.out.println("bb的构造函数");
}
public static void main(String args[])
{
bb t=new bb();
}
}/*********************************************************************************
看了好多的书都说:"当你创建一个子类的实例时,首先会调用父类的构造函数,再调用自身的构造函数"
像我上面的这个程序,如果按书上所说应该输出:
aa的构造函数
aa的构造函数
bb的构造函数
可是却输出了这样意想不到的结果如下:
aa的构造函数
bb的构造函数
**********************************************************************************/
bb(){
System.out.println("bb的构造函数");
}
其实和
bb()
{ super();
System.out.println("bb的构造函数");
}
是一样的系统默认给你加上 super() 也就是说会默认先调用父类的构造函数
这也就是你看到的书上会写"当你创建一个子类的实例时,首先会调用父类的构造函数,再调用自身的构造函数"
如果base class 的构造函数带有参数,则在子类的构造函数中一定要调用super(param)你的结果很正常!