鍍金池/ 教程/ Java/ Java繼承和構(gòu)造函數(shù)
Java參數(shù)傳遞
Java靜態(tài)內(nèi)部類
Java final關(guān)鍵字
http://www.yiibai.com/java_object_oriented_design/java_inheritan
Java泛型類
Java標(biāo)準(zhǔn)注解
Java接口教程
Java注解
Java枚舉類型
http://www.yiibai.com/java_object_oriented_design/java_class_ins
Java接口實(shí)現(xiàn)
Java哈希編碼
Java泛型約束
http://www.yiibai.com/java_object_oriented_design/java_import.ht
Java注解默認(rèn)值
Java異常拋出
Java不可變對象
Java類基礎(chǔ)
Java接口繼承
Java類方法
Java訪問級別
Java對象克隆
Java初始化塊
Java可變長度參數(shù)
Java接口字段
Java對象相等比較(Equals)
Java實(shí)例和靜態(tài)方法
Java繼承方法隱藏(覆蓋)
Java面向?qū)ο笤O(shè)計(jì)
Java對象finalize()方法
Java抽象類和方法
Java Object類
Java泛型方法和構(gòu)造函數(shù)
Java枚舉體
Java接口方法
Java this關(guān)鍵字
Java注解類型的限制
Java main()方法
Java Enum類
Java注解用法
Java枚舉比較
Java注解類型
Java內(nèi)部類成員
Java繼承和構(gòu)造函數(shù)
Java類實(shí)例化
Java內(nèi)部類類型
Java對象toString()方法
Java finally塊
Java繼承教程
Java自定義異常
Java枚舉值
Java接口作為類型
Java異常類
Java方法覆蓋教程
http://www.yiibai.com/java_object_oriented_design/java_class_bas
Java枚舉方法
Java方法重載
http://www.yiibai.com/java_object_oriented_design/java_interface
Java異常用法
Java內(nèi)部類
Java類成員訪問級別
Java異常處理教程
Java注解反射
Java構(gòu)造函數(shù)(構(gòu)造器)
Java導(dǎo)入(import語句的用法)

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

構(gòu)造函數(shù)不是類的成員,它們不是由子類繼承的。它們用于初始化實(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é)果。

Inside CSuper() constructor.
Inside CSub()  constructor.

示例

下面顯示了編譯器如何注入一個(gè)super()調(diào)用來調(diào)用父類的無參數(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指的是類的直接父類(超類)??梢哉{(diào)用超類構(gòu)造函數(shù),使用super關(guān)鍵字必須要放在構(gòu)造函數(shù)中的第一個(gè)語句。

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

可以將超類的無參數(shù)構(gòu)造函數(shù)或任何其他構(gòu)造函數(shù)顯式地調(diào)用在類的構(gòu)造函數(shù)中的第一個(gè)語句。只有在沒有明確添加的情況下,編譯器才會注入無參數(shù)構(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("李經(jīng)理");
    String name = mgr.getName();
    System.out.println("Manager name:  " + name);
  }
}

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

Manager name:  李經(jīng)理

每個(gè)類都必須直接或間接地從其構(gòu)造函數(shù)中調(diào)用其超類的構(gòu)造函數(shù)。如果超類沒有無參數(shù)構(gòu)造函數(shù),那么必須顯式地調(diào)用超類的其他構(gòu)造函數(shù)。