class SuperClass {
private int n;
/*
SuperClass() {
System.out.println("SuperClass()");
}
*/
SuperClass(int n) {
System.out.println("SuperClass(" + n + ")");
this.n = n;
}
}class SubClass extends SuperClass {
private int n;
SubClass(int n) {
super();
System.out.println("SubClass(" + n + ")");
this.n = n;
}
SubClass() {
super(300);
System.out.println("SubClass()");
}
}public class TestSuperSub {
public static void main(String arg[]) {
//SubClass sc1 = new SubClass();
SubClass sc2 = new SubClass(400);
}
}
private int n;
/*
SuperClass() {
System.out.println("SuperClass()");
}
*/
SuperClass(int n) {
System.out.println("SuperClass(" + n + ")");
this.n = n;
}
}class SubClass extends SuperClass {
private int n;
SubClass(int n) {
super();
System.out.println("SubClass(" + n + ")");
this.n = n;
}
SubClass() {
super(300);
System.out.println("SubClass()");
}
}public class TestSuperSub {
public static void main(String arg[]) {
//SubClass sc1 = new SubClass();
SubClass sc2 = new SubClass(400);
}
}
所以SubClass调用super()这个空构造方法会编译报错
要么你显式重新空的构造方法,要么删掉其他的构造方法的重载,这样才能不会编译报错
因为你把不带参数的那个构造方法注释掉了,把注释去掉就行了
1、如果你不写构造方法时,系统会给你一个默认的不带参数的构造方法;
2、如果你写了构造方法时,系统就不会给你默认的构造方法了;你的程序已经自己写了构造方法了,所以系统就不会给你默认的构造方法了,所以super()这个方法是没有不存在的,你要调用的话,需要自己写,也就是注释掉的那段代码
private int n;
/*
SuperClass() {
System.out.println("SuperClass()");
}
*/
SuperClass(int n) {
System.out.println("SuperClass(" + n + ")");
this.n = n;
}
}class SubClass extends SuperClass {
private int n;
SubClass(int n) {
//super();
System.out.println("SubClass(" + n + ")");
this.n = n;
}
SubClass() {
super(300);
System.out.println("SubClass()");
}
}public class TestSuperSub {
public static void main(String arg[]) {
SubClass sc1 = new SubClass();
//SubClass sc2 = new SubClass(400);
}
}
那这段代码为什么又会报错,我知道是 :SubClass(int n) {
//super();
System.out.println("SubClass(" + n + ")");
this.n = n;
}
这段是这段代码的原因,可是这段代码不是没有使用到吗?这也会产生影响?