溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java面向?qū)ο罄^承詳細(xì)解析

發(fā)布時(shí)間:2020-05-11 16:10:06 來(lái)源:億速云 閱讀:225 作者:Leah 欄目:編程語(yǔ)言

今天小編就為大家?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è)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI