class SuperClass {
private int n;
/*
SuperClass() {
System.out.println("11");
}
*/
SuperClass(int n) {
System.out.println("22");
this.n = n;
}
}class SubClass extends SuperClass {
private int n;
SubClass(int n) {
System.out.println("33");
this.n = n;
} SubClass() {
super(300);
System.out.println("44");
}
}public class TextSuperSub {
public static void main(String []args) {
SubClass sc1 = new SubClass();
//SubClass sc2 = new SubClass(400);
}
}
为什么会说找不到父类无参的那个构造方法?,其一我遵守了super的使用规则,我在子类构造方法中第一行写了super函数.其二.我创建子类的对象时.调用的是子类无参的构造方法.无参的构造方法正好第一行有这个super(300).而父类中也有带参数的构造方法.为啥会去找那个无参的构造方法.可能有人会说我子类中有一个构造方法没有写super函数.可我也没调用过那个构造方法啊.
private int n;
/*
SuperClass() {
System.out.println("11");
}
*/
SuperClass(int n) {
System.out.println("22");
this.n = n;
}
}class SubClass extends SuperClass {
private int n;
SubClass(int n) {
System.out.println("33");
this.n = n;
} SubClass() {
super(300);
System.out.println("44");
}
}public class TextSuperSub {
public static void main(String []args) {
SubClass sc1 = new SubClass();
//SubClass sc2 = new SubClass(400);
}
}
为什么会说找不到父类无参的那个构造方法?,其一我遵守了super的使用规则,我在子类构造方法中第一行写了super函数.其二.我创建子类的对象时.调用的是子类无参的构造方法.无参的构造方法正好第一行有这个super(300).而父类中也有带参数的构造方法.为啥会去找那个无参的构造方法.可能有人会说我子类中有一个构造方法没有写super函数.可我也没调用过那个构造方法啊.
顶一个,你用super调用,但是却父类里面却没有。。
而如果你指定了super的有参构造函数是会调用相应函数的
"而SuperClass中由于已经定义了一个无参的构造方法"。 纠正,定义了一个有参的构造方法
--java2 核心技术(卷I)第七版 120页
super(300);
System.out.println("44");
}
这个构造函数.在这个函数中我已经显示调用super(300);他是不是应该去找父类中带参数的那个构造函数呢?还是说我没创建带参数的构造方法,我子类的带参构造方法也会调用.解释下关键的!!!!!!!!!!!!!!!!!!!!!!!!!