class Super{  
    public int i=0;  
    public Super(String text){  
    i=1;  
    }  
    }  
    public class Sub extends Super{  
      public Sub(String text){  
       i=2;  
      }  
    public static void main(String args[]){  
     Sub sub=new Sub("Hello");  
     System.out.println(sub.i);  
     }  
     }  
    what is the result?      
     A. compile will fail  
     B. compile success and print "0"  
     C. compile success and print "1"  
     D. compile success and print "2"  
选什么啊.谢谢.最好能解释下.

解决方案 »

  1.   

    class Super{  
        public int i=0;  
        public Super(String text){  
        i=1;  
        }  
        }  
        public class Sub extends Super{  
          public Sub(String text){  
            super();//这是默认调用的,所有都是如此。
           i=2;  
          }  
        public static void main(String args[]){  
         Sub sub=new Sub("Hello");  
         System.out.println(sub.i);  
         }  
         }  
    所以改一下父类:
    class Super{  
        public int i=0;  
        public Super(String text){  
        i=1;  
        }  
    public Super()
    {}
        }  
    这样就OK了,因为你写了一个带参数的所以把那个默认屏蔽了,所以不带参数自己加上去,
      

  2.   

    或者这样:
    public class Sub extends Super{  
          public Sub(String text){  
            super(text);
           i=2;  
          }
      

  3.   

    super();//这是默认调用的,所有都是如此。
    ---------------------------------------------------
    为什么必须加上这句.我是重载父类的构造.还要显示调用父类的?
      

  4.   

    如果想考SCJP建议你看JAVA2学习指南.我就是看的那个.
      

  5.   

    假设A是B的父类,B是A的子类。1、如果程序员没有给类A没有提供构造函数,则编译器会自动提供一个默认的无参数的构造函数,如果用户提供了自己的构造函数,则编译器就不在提供默认的无参数构造函数。2、子类B实例化时会自动调用父类A的默认构造函数,所以如果A的默认的无参数的构造函数为private,则编译器会报错,而如果A没有提供默认的无参数的构造函数,而提供了其他类型的构造函数,编译器同样会报错,因为B找不到A的默认无参数构造函数。所以,我们最好给父类A提供一个无参数的构造函数。3、或者在B的构造函数中显示的调用父类A的有参构造函数。super(parameter)
      

  6.   

    在子类的构造方法中第一句应该是super(text);先显示的指定要调用的父类的构造方法。结贴是个好习惯,谢谢。
      

  7.   

    楼主想考SCJP,最基本的问题一定要懂啊如果父类只有带参数的构造函数那么子类的构造函数的第一行必须明确调用
      

  8.   

    scjp对找工作起不到什么作用,很多公司招人不会看这些的。scjp只考java基础,而只懂点java基础是找不到工作的
      

  9.   

    zdjray(PubSoft) 说的很深刻..~
      

  10.   

    那如果一类C既继承自类A又继承自类B,那么在实例化子类C的时候该怎么做呢?