Java 编译错误继承

Java 编译错误继承,java,inheritance,compiler-errors,Java,Inheritance,Compiler Errors,我有下面的代码,它不会编译 public class P { private int num; P(int n) { this.num = n; } } public class Q extends P { private int i; public Q() { i = 0; } } 修复第二个方法,使其可以编译 您需要在p中添加默认构造函数以使其可编译 public class P { private

我有下面的代码,它不会编译

public class P {
    private int num;
    P(int n) {
        this.num = n;
    }
}

public class Q extends P {
    private int i;
    public Q() {
        i = 0;
    }
}

修复第二个方法,使其可以编译

您需要在
p
中添加默认构造函数以使其可编译

public class P {
    private int num;
    P(int n) {
        this.num = n;
    }
}

public class Q extends P {
    private int i;
    public Q() {
        i = 0;
    }
}
P() {
  this.num = 0; // some default value
}

调用超级构造函数:

public Q() {
    super(42);  // <--
    i = 0;
}
public Q(){

super(42);//在代码中,编译器在Q类中写入super()关键字,时间控制将转到p类并调用构造函数,但p类有一个参数构造函数。所以,您可以添加任何数字的super()关键字,因为p类构造函数有一个int类型的参数

  class P {
  private int num;
  P(int n) {
    this.num = n;
   }
  }
 public class Q extends P {
  private int i;
  public Q() {
    super(20);
    i = 0;
   }
     }

但我需要加上Q而不是P