华南俳烁实业有限公司

java

當前位置:中華考試網 >> java >> java教程 >> 文章內容

Java繼承(extends)簡明教程

來源:中華考試網  [2020年11月23日]  【

  繼承是面向對象的三大特征之一。繼承和現實生活中的“繼承”的相似之處是保留一些父輩的特性,從而減少代碼冗余,提高程序運行效率。

  Java 中的繼承就是在已經存在類的基礎上進行擴展,從而產生新的類。已經存在的類稱為父類、基類或超類,而新產生的類稱為子類或派生類。在子類中,不僅包含父類的屬性和方法,還可以增加新的屬性和方法。

  Java 中子類繼承父類的語法格式如下:

  修飾符 class class_name extends extend_class { // 類的主體}

  其中,class_name 表示子類(派生類)的名稱;extend_class 表示父類(基類)的名稱;extends 關鍵字直接跟在子類名之后,其后面是該類要繼承的父類名稱。例如:

  public class Student extends Person{}

  Java 的繼承通過 extends 關鍵字來實現,extends 的英文意思是擴展,而不是繼承。extends 很好的體現了子類和父類的關系,即子類是對父類的擴展,子類是一種特殊的父類。從這個角度看,使用繼承來描述子類和父類的關系是錯誤的,用擴展更恰當。

  那么為什么國內把 extends 翻譯為“繼承”呢?子類擴展父類之后就可以獲得父類的屬性和方法,這與漢語中的繼承(子類從父類獲得一筆財富稱為繼承)具有相似性。

  Java 與 C++ 定義繼承類的方式十分相似。Java 用關鍵字 extends 代替了 C++ 中的冒號(:)。在 Java 中,所有的繼承都是公有繼承, 而沒有 C++ 中的私有繼承和保護繼承。

  填寫下面表單即可預約申請免費試聽java課程!害怕學不會?助教陪讀,隨時解惑!擔心就業(yè)?一地學習,可全國推薦就業(yè)!

預約申請免費聽java課程

  • 地區(qū):
  • 姓名:
  • 手機:

  類的繼承不改變類成員的訪問權限,也就是說,如果父類的成員是公有的、被保護的或默認的,它的子類仍具有相應的這些特性,并且子類不能獲得父類的構造方法。

  例 1

  教師和學生都屬于人,他們具有共同的屬性:姓名、年齡、性別和身份證號,而學生還具有學號和所學專業(yè)兩個屬性,教師還具有教齡和所教專業(yè)兩個屬性。下面編寫 Java 程序代碼,使教師(Teacher)類和學生(Student)類都繼承于人(People)類,具體的實現步驟如下。

  1)創(chuàng)建人類 People,并定義 name、age、sex、sn 屬性,代碼如下:

  public class People { public String name; // 姓名 public int age; // 年齡 public String sex; // 性別 public String sn; // 身份證號 public People(String name, int age, String sex, String sn) { this.name = name; this.age = age; this.sex = sex; this.sn = sn; } public String toString() { return "姓名:" + name + "\n年齡:" + age + "\n性別:" + sex + "\n身份證號:" + sn; }}

  如上述代碼,在 People 類中包含 4 個公有屬性、一個構造方法和一個 toString() 方法。

  2)創(chuàng)建 People 類的子類 Student 類,并定義 stuNo 和 department 屬性,代碼如下:

  public class Student extends People { private String stuNo; // 學號 private String department; // 所學專業(yè) public Student(String name, int age, String sex, String sn, String stuno, String department) { super(name, age, sex, sn); // 調用父類中的構造方法 this.stuNo = stuno; this.department = department; } public String toString() { return "姓名:" + name + "\n年齡:" + age + "\n性別:" + sex + "\n身份證號:" + sn + "\n學號:" + stuNo + "\n所學專業(yè):" + department; }}

  由于 Student 類繼承自 People 類,因此,在 Student 類中同樣具有 People 類的屬性和方法,這里重寫了父類中的 toString() 方法。

  注意:如果在父類中存在有參的構造方法而并沒有重載無參的構造方法,那么在子類中必 須含有有參的構造方法,因為如果在子類中不含有構造方法,默認會調用父類中無參的構造方法,而在父類中并沒有無參的構造方法,因此會出錯。

  3)創(chuàng)建 People 類的另一個子類 Teacher,并定義 tYear 和 tDept 屬性,代碼如下:

  public class Teacher extends People { private int tYear; // 教齡 private String tDept; // 所教專業(yè) public Teacher(String name, int age, String sex, String sn, int tYear, String tDept) { super(name, age, sex, sn); // 調用父類中的構造方法 this.tYear = tYear; this.tDept = tDept; } public String toString() { return "姓名:" + name + "\n年齡:" + age + "\n性別:" + sex + "\n身份證號:" + sn + "\n教齡:" + tYear + "\n所教專業(yè):" + tDept; }}

  Teacher 類與 Student 類相似,同樣重寫了父類中的 toString() 方法。

責編:fushihao

上一篇:Java7:多異常捕獲

下一篇: 沒有了

  • 會計考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學歷考試
杭锦后旗| 张家川| 军事| 墨竹工卡县| 竹山县| 孟津县| 报价| 彰化市| 普定县| 禹城市| 呼伦贝尔市| 荣成市| 西乌珠穆沁旗| 大丰市| 南陵县| 岑溪市| 宣武区| 乌拉特后旗| 英德市| 措美县| 内丘县| 西丰县| 青河县| 右玉县| 泰顺县| 尉氏县| 青岛市| 漳浦县| 望江县| 厦门市| 汽车| 安塞县| 蒙山县| 武冈市| 永福县| 甘南县| 会泽县| 胶州市| 洪湖市| 河间市| 伊川县|