编译错误继承

时间:2013-08-04 03:04:30

标签: 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;
    }
}

修复第二个方法以便它可以编译。

3 个答案:

答案 0 :(得分:1)

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

P() {
  this.num = 0; // some default value
}

答案 1 :(得分:1)

调用超级构造函数:

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

您可以详细了解super here

答案 2 :(得分:0)

在代码中,编译器在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;
   }
     }