package mypack1;public class A { int i;
//A(){};
A(int i){
this.i = i*2;
}
}class B extends A{
public static void main(String[] args){
B b = new B(2);
}
B(int i){
System.out.println(i);
}
}哪位仁兄能给我解释一下啊。

解决方案 »

  1.   

    package mypack1; public class A { int i; 
    A(){}; 
    A(int i){ 
    this.i = i*2; 

    } class B extends A{ 
    public static void main(String[] args){ 
    B b = new B(2); 

    B(int i){ 
    System.out.println(i); 


    在试一下看看!
      

  2.   

    第一 你的main方法写在B里,那么你想运行这个程序,把B改成public的类 A为默认
    第二 构造器是级联调用的,你在父类里写了有参构造器,系统就不提供默认的无参构造器了,那样子类构造器里级联调用父类无参构造器就会报错,排错方法是你要么自己调用父类有参构造器 要么给父类一个无参的构造器
      

  3.   


    class A {
    int i;
    // A(){};
    A(int i) {
    this.i = i * 2;
    }
    }
    public class B extends A {
    public static void main(String[] args) {
    B b = new B(2);
    } B(int i) {
    super(i);//如果你想屏蔽掉A(){};可以调用父类的构造函数,否则给父类一个无参的构造器
    System.out.println(i);
    }
    }
      

  4.   

    类层次结构创建以后,构造方法以派生的次序调用,从超类到子类。而且super()必须是子类构造方法的第一个执行语句,无论你用到了super()没有,这个次序不变。如果super()没有被用到,每个超类的默认的或无参数的构造方法将执行。