第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

關(guān)于java多態(tài)的問(wèn)題?

關(guān)于java多態(tài)的問(wèn)題?

內(nèi)向控 2016-11-14 10:38:46
我有一個(gè)父類animal子類dog然后animal obj1 = new dog();和dog obj2 = new dog();有什么區(qū)別?
查看完整描述

5 回答

已采納
?
coder_Jason

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超2個(gè)贊

我也糾結(jié)過(guò)這個(gè)問(wèn)題,現(xiàn)在弄清楚了,首先你的第一種方式是,父類的引用指向子類的對(duì)象,這里會(huì)發(fā)生向上轉(zhuǎn)型,也叫java中的多態(tài),在第一種方式中,你可以通過(guò)父類的引用調(diào)用子類也就是dog中覆蓋之后的父類方法,但是不能調(diào)用dog類中有而animal中沒(méi)有的方法,而第二種方法就是一個(gè)簡(jiǎn)單的方式聲明對(duì)象,可以調(diào)用自己的全部方法,由于dog是繼承自animal的,所以也可以調(diào)用或訪問(wèn)animal中的方法和屬性
查看完整回答
2 反對(duì) 回復(fù) 2016-11-14
  • 內(nèi)向控
    內(nèi)向控
    謝謝~~但是既然是這樣為什么還要有animal obj1 = new dog呢?明明dog obj2 = new dog可以做和animal obj1 = new dog一樣的事情而且比它做的更多。
  • coder_Jason
    coder_Jason
    是的,表面看起來(lái)是沒(méi)什么作用,但是在下面的情況就顯得非常有必要了,比如你考慮下,現(xiàn)在有一個(gè)類叫Instrument(樂(lè)器),因?yàn)闃?lè)器都能發(fā)出聲音,所以Instrument類中有一個(gè)抽象方法makeSound(),因?yàn)槊恳环N樂(lè)器發(fā)聲的方式都不同,所以makeSound方法聲明為抽象方法留給子類覆蓋實(shí)現(xiàn),然后現(xiàn)在有一個(gè)Instrument的子類叫Piano,它覆蓋了makeSound方法,假設(shè)只是簡(jiǎn)單地輸出一行I am a piano,那么假如另一個(gè)Stage類中聲明了一個(gè)成員方法如下: perform(Instrument instrument) {instrument.makeSound();} ,現(xiàn)在多態(tài)的好處就很明顯了,你考慮一下,為什么perform方法的參數(shù)是一個(gè)抽象類的實(shí)例?我們不是說(shuō)抽象類是不能用new關(guān)鍵字來(lái)創(chuàng)建對(duì)象的嗎?那這個(gè)參數(shù)是什么意思?bingo,其實(shí)我們?cè)谡{(diào)用perform方法的時(shí)候,傳進(jìn)來(lái)的形參肯定是Instrument類的的子類對(duì)象,而當(dāng)你把子類對(duì)象傳進(jìn)來(lái)的時(shí)候,是不是就相當(dāng)于把一個(gè)子類對(duì)象賦值給了其父類Instrument的一個(gè)引用呢?是的,這里就發(fā)生了向上轉(zhuǎn)型,而轉(zhuǎn)型之后你卻可以通過(guò)這個(gè)instrument引用去調(diào)用子類中覆蓋之后的方法.這就是多態(tài).你可能還有疑問(wèn),為什么我不把perform的參數(shù)設(shè)置為子類對(duì)象而要設(shè)置為Instrument的引用呢?因?yàn)镮nstrument樂(lè)器類肯定不止一個(gè)子類,如果你把參數(shù)設(shè)置為Piano 引用的話,那如果現(xiàn)在有一個(gè)guitar子類,那你還準(zhǔn)備去寫(xiě)第二個(gè)參數(shù)為guitar的perform方法嗎?這就是多態(tài)帶來(lái)的好處,順便提一下,java按鈕的事件監(jiān)聽(tīng)也是同樣的道理
  • 內(nèi)向控
    內(nèi)向控
    額~~好難~~看不懂
點(diǎn)擊展開(kāi)后面1
?
mik1s

TA貢獻(xiàn)4條經(jīng)驗(yàn) 獲得超2個(gè)贊

obj1 調(diào)用的方法 是animal的 實(shí)現(xiàn)方法 obj2調(diào)用的是 dog的方法, 如果animal中有自己?jiǎn)为?dú)多出來(lái)的方法,obj1 是不能調(diào)用的

查看完整回答
1 反對(duì) 回復(fù) 2016-11-15
?
我埋藏的東西你別挖

TA貢獻(xiàn)13條經(jīng)驗(yàn) 獲得超14個(gè)贊

你可以這么理解 一對(duì)家庭有一對(duì)兒女,他們性別不同,樣貌不同,但他們的父母都是同一人。

查看完整回答
反對(duì) 回復(fù) 2016-11-14
?
秋涼念夏y

TA貢獻(xiàn)6條經(jīng)驗(yàn) 獲得超2個(gè)贊

效果是相同的,只是animal obj1 = new dog();是將子類dog的一個(gè)對(duì)象的引用交給了父類animal,這樣obj1在調(diào)用它被dog繼承的方法的時(shí)候就是在調(diào)用dog中的方法了,總之繼承是為了多態(tài)

查看完整回答
反對(duì) 回復(fù) 2016-11-14
?
sntatas

TA貢獻(xiàn)53條經(jīng)驗(yàn) 獲得超11個(gè)贊

obj1調(diào)用的public函數(shù)可以是子類Dog的,而obj1調(diào)用的其他函數(shù)如static,private,實(shí)例變量都是Animal的

查看完整回答
反對(duì) 回復(fù) 2016-11-14
?
星鴻

TA貢獻(xiàn)6條經(jīng)驗(yàn) 獲得超0個(gè)贊

沒(méi)區(qū)別吧,都是dog的對(duì)象

查看完整回答
反對(duì) 回復(fù) 2016-11-14
  • 5 回答
  • 0 關(guān)注
  • 2166 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)