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