如果子类的构造器重没有显示的调用父类构造器,则系统将会默认调用父类中无参数的构造器。此时,如果父类中没有无参数的构造器,则编译将会出错
ClassA:
public class ClassA {
public ClassA()
{
System.out.println("this is public ClassA()!");
}
public ClassA(int i)
{
System.out.println("this is public ClassA(int i)!");
}
public ClassA(int i,int j)
{
System.out.println("this is public ClassA(int i,int j)!");
}
}
ClassB:
public class ClassB extends ClassA{
public ClassB()
{
System.out.println("this is public ClassB()!");
}
public ClassB(int i)
{
System.out.println("this is public ClassB(int i)!");
}
public ClassB(int i,int j)
{
ClassA a=new ClassB(i);
System.out.println("this is public ClassB(int i,int j)!");
}
}
ClassC:
public class ClassC extends ClassB{
public ClassC()
{
System.out.println("this is public ClassC()!");
}
public ClassC(int i)
{
System.out.println("this is public ClassC(int i)!");
}
public ClassC(int i,int j)
{
ClassC a=new ClassC(i);
System.out.println("this is public ClassC(int i,int j)!");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ClassA a=new ClassA(1);
System.out.println("---------");
ClassB b=new ClassB(11,1);
System.out.println("-----------");
ClassC c=new ClassC(1,1);
}
}
输出:
this is public ClassA(int i)!
---------
this is public ClassA()!
this is public ClassA()!
this is public ClassB(int i)!
this is public ClassB(int i,int j)!
-----------
this is public ClassA()!
this is public ClassB()!
this is public ClassA()!
this is public ClassB()!
this is public ClassC(int i)!
this is public ClassC(int i,int j)!