java的封裝繼承多態(tài)的示例分析

這篇文章將為大家詳細(xì)講解有關(guān)java的封裝繼承多態(tài)的示例分析,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、全州網(wǎng)站維護(hù)、網(wǎng)站推廣。

封裝

封裝可以拆開理解,裝,是把數(shù)據(jù)和方法放進(jìn)了類里;封,把裝進(jìn)去的數(shù)據(jù)和成員方法加上訪問(wèn)權(quán)限。對(duì)于外界,內(nèi)部細(xì)節(jié)是透明的,暴露給外面的是它的訪問(wèn)方法。

繼承

繼承,是為了重用父類代碼。兩個(gè)類若具有is a的關(guān)系就可以用extends。另外,繼承也為實(shí)現(xiàn)多態(tài)做了鋪墊。

多態(tài)

程序中定義的引用變量(java有兩大數(shù)據(jù)類型,內(nèi)部數(shù)據(jù)類型和引用數(shù)據(jù)類型)所指向的具體類型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編譯時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量到低指向哪個(gè)類的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類中實(shí)現(xiàn)的方法,必須在程序運(yùn)行期間才能決定。
在理解多態(tài)時(shí),總是逃不掉“向上轉(zhuǎn)型”。

問(wèn)題的核心在于,一般情況下,在子類繼承父類后,子類具有父類的所有成員和方法。但是在向上轉(zhuǎn)型之后,子類中一些獨(dú)有的成員和方法對(duì)于該父類類型的引用變量則“不可見”。

實(shí)例

package binaryheap.test;

import java.awt.image.SinglePixelPackedSampleModel;

//創(chuàng)建一個(gè)Animal類
class Animal {
	public void run() {
		System.out.println("Animal在奔跑?。?!");
		sing();
	}

	public void sing() {
		System.out.println("Animal在唱歌~~~");
	}

}

//創(chuàng)建一個(gè)子類繼承父類
class Lion extends Animal {

	// 重載run()方法,和父類中的run()方法不是一個(gè)
	// 向上轉(zhuǎn)型時(shí)會(huì)丟失該方法
	public void run(String anotherAnimal) {

		System.out.println(("Lion在追一只" + anotherAnimal));;
		sing();
	}

	// 重寫
	public void sing() {
		System.out.println("Lion在唱歌~~~");
	}

}

public class BH {

	public static void main(String[] args) {
		// 創(chuàng)建一個(gè)父類引用,但是指向Lion對(duì)象
		Animal animal = new Lion();
		animal.run();
	}
}

結(jié)果:

Animal在奔跑?。?!
Lion在唱歌~~~

Animal animal = new Lion(); 向上轉(zhuǎn)型后的Animal類型的引用,丟失了重載的方法run(),即子類中的run(),指向的是父類的run(),因此輸出“Animal在奔跑”,而不是“Lion在奔跑”。run()方法中調(diào)用了sing()方法,因?yàn)閟ing()方法被重寫,引用能夠找到sing()方法,因此引用調(diào)用此sing()方法(動(dòng)然調(diào)用),輸出“Lion在唱歌”。

實(shí)現(xiàn)多態(tài)的必要條件為:繼承、重寫、向上轉(zhuǎn)型(或者說(shuō)父類引用指向子類對(duì)象)。其實(shí)現(xiàn)機(jī)制為:調(diào)用那個(gè)方法是由被引用對(duì)象的類型決定,而不是引用變量的類型決定的,并且這個(gè)被調(diào)用的方法必須是被子類重寫過(guò)的。

總結(jié):

  1. 使用父類的引用指向子類對(duì)象

  2. 該引用只能調(diào)用父類中定義的方法和變量

  3. 若子類重寫了父類的一個(gè)方法(只能重寫方法,不能重寫變量,否則編譯時(shí)期會(huì)報(bào)錯(cuò)),那么調(diào)用的時(shí)候會(huì)調(diào)用子類的這個(gè)方法。

關(guān)于java的封裝繼承多態(tài)的示例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站題目:java的封裝繼承多態(tài)的示例分析
文章地址:http://muchs.cn/article38/jpgssp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、企業(yè)網(wǎng)站制作商城網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、軟件開發(fā)、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)