class SuperClass
{
private int i; /*SuperClass() {
System.out.println("SuperClass");
}*/ SuperClass(int i) {
this.i = i;
System.out.println("SuperClass ("+i+")");
}
};class SubClass extends SuperClass
{
private int i; SubClass() {
super(200);
System.out.println("SubClass");
} SubClass(int i) {
this.i = i;
System.out.println("SubClass ("+i+")");
}
};public class TestSuperSub
{
public static void main(String[] args) {
SubClass s1 = new SubClass();
//SubClass s2 = new SubClass(400);
}
};为什么编译时会出错?
D:\java\TestSuperSub\TestSuperSub.java:24: cannot find symbol
symbol  : constructor SuperClass()
location: class SuperClass
        SubClass(int i) {
                        ^
1 error

解决方案 »

  1.   

    SubClass(int   i)   {
    //少了super()或super(i)之类的父类方法
    this.i   =   i; 
    System.out.println( "SubClass   ( "+i+ ") "); 
      

  2.   

    试了上面的方法 果然没有错误了,能解释一下为什么吗?SubClass   s1   =   new   SubClass(); 
    调用的是无参数的构造函数:SubClass()   { 
    super(200); 
    System.out.println( "SubClass "); 
    } 这里是调用父类的构造函数:SuperClass(int   i) 吗?为什么还是会出错?
      

  3.   

    子类在用构造函数实例化的时候必需要调父类的默认构造函数啊 o(∩_∩)o... 这个是java继承的时候的特性