📜  Java中的继承和构造函数

📅  最后修改于: 2020-03-22 14:34:29             🧑  作者: Mango

在Java中,不带参数的基类的构造函数在派生类构造函数中自动调用。例如,以下程序的输出为:

基类构造函数被调用
派生类构造函数被调用
// 文件名: Main.java
class Base {
  Base() {
    System.out.println("基类构造函数被调用 ");
  }
}
class Derived extends Base {
  Derived() {
    System.out.println("派生类构造函数被调用 ");
  }
}
public class Main {
  public static void main(String[] args) {
    Derived d = new Derived();
  }
}

但是,如果要调用基类的参数化构造函数,则可以使用super()进行调用。需要注意的是基类构造函数调用必须是派生类构造函数的第一行。例如,在下面的程序中,super(_x)的第一行是派生的类构造函数。

// 文件名: Main.java
class Base {
  int x;
  Base(int _x) {
    x = _x;
  }
}
class Derived extends Base {
  int y;
  Derived(int _x, int _y) {
    super(_x);
    y = _y;
  }
  void Display() {
    System.out.println("x = "+x+", y = "+y);
  }
}
public class Main {
  public static void main(String[] args) {
    Derived d = new Derived(10, 20);
    d.Display();
  }
}

输出:

x = 10, y = 20