Java 繼承和構(gòu)造函數(shù)

2018-06-28 16:08 更新

Java面向?qū)ο笤O(shè)計(jì) - Java繼承和構(gòu)造函數(shù)


構(gòu)造函數(shù)不是類(lèi)的成員,它們不是由子類(lèi)繼承的。

它們用于初始化實(shí)例變量。

class CSuper {
  public CSuper() {
    System.out.println("Inside CSuper() constructor.");
  }
}

class CSub extends CSuper {
  public CSub() {
    System.out.println("Inside CSub()  constructor.");
  }
}

public class Main {
  public static void main(String[] args) {
    CSub cs = new CSub();
  }
}

上面的代碼生成以下結(jié)果。


例子

下面顯示了如何編譯器注入一個(gè)super()來(lái)立即調(diào)用父類(lèi)的無(wú)參數(shù)構(gòu)造函數(shù)。

class CSuper {
  public CSuper() {
    super(); // Injected by the compiler
    System.out.println("Inside CSuper() constructor.");
  }
}

class CSub extends CSuper {
  public CSub() {
    super(); // Injected by the compiler
    System.out.println("Inside CSub()  constructor.");
  }
}

public class Main {
  public static void main(String[] args) {
    CSub cs = new CSub();
  }
}

上面的代碼生成以下結(jié)果。

關(guān)鍵字super指的是類(lèi)的直接父類(lèi)。

我們可以調(diào)用超類(lèi)構(gòu)造函數(shù),只使用super關(guān)鍵字作為構(gòu)造函數(shù)中的第一個(gè)語(yǔ)句。


無(wú)參數(shù)構(gòu)造函數(shù)

我們可以將超類(lèi)的no-args構(gòu)造函數(shù)或任何其他構(gòu)造函數(shù)顯式地調(diào)用為類(lèi)的構(gòu)造函數(shù)中的第一個(gè)語(yǔ)句。

只有在沒(méi)有明確添加的情況下,編譯器才會(huì)注入no-args構(gòu)造函數(shù)調(diào)用。

class Employee {
  private String name = "Unknown";

  public Employee(String name) {
    this.name = name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return name;
  }
}

class Manager extends Employee {
  public Manager(String name) {
    super(name);
  }
}

public class Main {
  public static void main(String[] args) {
    Manager mgr = new Manager("Tom");
    String name = mgr.getName();
    System.out.println("Manager name:  " + name);
  }
}

上面的代碼生成以下結(jié)果。


每個(gè)類(lèi)都必須直接或間接地從其構(gòu)造函數(shù)中調(diào)用其超類(lèi)的構(gòu)造函數(shù)。

如果超類(lèi)沒(méi)有no-args構(gòu)造函數(shù),我們必須顯式地調(diào)用超類(lèi)的任何其他構(gòu)造函數(shù)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)