您好,登錄后才能下訂單哦!
今天小編就為大家帶來一篇java面向對象繼承詳細解析的文章。小編覺得挺不錯的,為此分享給大家做個參考。一起跟隨小編過來看看吧。
什么是java繼承
繼承是面向對象最顯著的一個特性。繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,并能擴展新的能力。
Java繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數據或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。這種技術使得復用以前的代碼非常容易,能夠大大縮短開發周期,降低開發費用。( )
比如可以先定義一個類叫車,車有以下屬性:車體大小,顏色,方向盤,輪胎,而又由車這個類派生出轎車和卡車兩個類,為轎車添加一個小后備箱,而為卡車添加一個大貨箱。
java繼承特征:
(1)繼承關系是傳遞的。若類C繼承類B,類B繼承類A(多繼承),則類C既有從類B那里繼承下來的屬性與方法,也有從類A那里繼承下來的屬性與方法,還可以有自己新定義的屬性和方法。繼承來的屬性和方法盡管是隱式的,但仍是類C的屬性和方法。繼承是在一些比較一般的類的基礎上構造、建立和擴充新類的最有效的手段。
(2)繼承簡化了人們對事物的認識和描述,能清晰體現相關類間的層次結構關系。
(3)繼承提供了軟件復用功能。若類B繼承類A,那么建立類B時只需要再描述與基類(類A)不同的少量特征(數據成員和成員方法)即可。這種做法能減小代碼和數據的冗余度,大大增加程序的重用性。
(4)繼承通過增強一致性來減少模塊間的接口和界面,大大增加了程序的易維護性。
(5)提供多重繼承機制。從理論上說,一個類可以是多個一般類的特殊類,它可以從多個一般類中繼承屬性與方法,這便是多重繼承。Java出于安全性和可靠性的考慮,僅支持單重繼承,而通過使用接口機制來實現多重繼承。
示例:
父類Person
/** * 父類 人類 * * @author zkj * */ public class Person { // 名字 protected String name; // 編號 protected int id; // 工作環境 protected String environment; // 特長 protected String speciality; public Person(String myName, int myid, String myEnvironment, String mySpeciality) { name = myName; id = myid; environment = myEnvironment; speciality = mySpeciality; } /* * 工作地點 */ public void work() { System.out.println(name + "在" + environment + "工作" + '。'); } /* * 工作能力 */ public void ability() { System.out.println(name + "我會" + speciality + '。'); } /* * 自我介紹 */ public void introduction() { System.out.println("大家好!我是" + id + "號" + name + '。'); } }
子類:
package com.zkj.person; /** * 人類的子類 醫生類 * * @author zkj * */ public class Doctor extends Person { public Doctor(String myName, int myid, String myEnvironment, String mySpeciality) { super(myName, myid, myEnvironment, mySpeciality); } /* * 自我介紹 */ void introductionMy() { super.introduction(); } /* * 自我介紹 覆寫 */ public void introduction() { System.out.println("大家好!我是一名醫生"); } /* * 工作職責 */ public void duty() { System.out.println("治病救人是我的職責"); } }
運行:
public class Run { public static void main(String[] args) { // 醫生張三 Doctor doctor = new Doctor("張三", 1, "醫院", "診斷"); // 張三的自我介紹 doctor.introduction(); // 張三的工作地點 doctor.work(); // 張三的能力 doctor.ability(); // 張三的職責 doctor.duty(); } }
以上就是java面向對象繼承的詳細解析,代碼示例詳細清楚,如果在日常工作遇到此問題,希望你能通過這篇文章解決問題。如果想了解更多相關內容,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。