class A{
A() {
System.out.println("You call super class non-args constructor!");
}
}
class B extends A{
B() {
//这里,编译器将自动加上 super();
System.out.println("You call subclass constructor!");
}
B(int c){
System.out.println("wrong,wrong");
}
B(String n) {
这里为空 // super();
System.out.println("想想就是这样");
this();
//实际就是调用了B(){...},而B(){...}已经调用过一次,super();所以super()就被调用两次,也就是对A进行了两次初始化。而在实例化一个对象时,一 个 构造方法只能调用一次,这然显然是不对的.
}
B(double c){
this();
this(3);
//这里实际上也是调用两次super(),也就是对A进行两次初始化,所以其结果也不对
}
}
注:任意一个类,它都一定有父类,如果你没有建立该类的父类,那么该类的父类为Object;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |