本人菜鸟,下边这个是关于继承的一个程序
class SuperClass{
private int n;
SuperClass(int n){
System.out.println("SuperClass("+n+")");
this.n=n;
}
}
class SubClass extends SuperClass{
private int n;
SubClass(int n){
System.out.println("SubClass("+n+")");
this.n=n;
}
SubClass(){
super(300);
System.out.println("SubClass()");
}
}
public class TestInherit{
public static void main(String args[]){
SubClass sc1=new SubClass();
}
}
为什么明明有SuperClass(int n)这个带参数的父类构造函数,可是子类子类中用super(300)这个的时候会出错呢?这个程序为什么运行不了???
class SuperClass{
private int n;
SuperClass(int n){
System.out.println("SuperClass("+n+")");
this.n=n;
}
}
class SubClass extends SuperClass{
private int n;
SubClass(int n){
System.out.println("SubClass("+n+")");
this.n=n;
}
SubClass(){
super(300);
System.out.println("SubClass()");
}
}
public class TestInherit{
public static void main(String args[]){
SubClass sc1=new SubClass();
}
}
为什么明明有SuperClass(int n)这个带参数的父类构造函数,可是子类子类中用super(300)这个的时候会出错呢?这个程序为什么运行不了???
private int n;
SuperClass(int n){
System.out.println("SuperClass("+n+")");
this.n=n;
}
}
class SubClass extends SuperClass{ SubClass(int n){
super(n);
System.out.println("SubClass("+n+")");
}
SubClass(){
super(300);
System.out.println("SubClass()");
}
}
public class TestInherit{
public static void main(String args[]){
SubClass sc1=new SubClass();
}
}
class SubClass extends SuperClass {
private int n; SubClass(int n) {
super(100);
System.out.println("SubClass(" + n + ")");
this.n = n;
} SubClass() {
super(300);
System.out.println("SubClass()");
}
}
2、如上你的SubClass中第二个构造方法,因为显示调用super,及调用父类的有参数构造,所以就不会去调用默认的无参构造super(),所以不会报错。
3、同理,如上SuperClass类中未显示调用super,也是调用Object类的无参构造。以上仅个人观点。
2、如上你的SubClass中第二个构造方法,因为显示调用super,及调用父类的有参数构造,所以就不会去调用默认的无参构造super(),所以不会报错。
3、同理,如上SuperClass类中未显示调用super,也是调用Object类的无参构造。以上仅个人观点。