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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

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

5 回答

已采納
?
coder_Jason

TA貢獻1條經(jīng)驗 獲得超2個贊

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

TA貢獻4條經(jīng)驗 獲得超2個贊

obj1 調(diào)用的方法 是animal的 實現(xiàn)方法 obj2調(diào)用的是 dog的方法, 如果animal中有自己單獨多出來的方法,obj1 是不能調(diào)用的

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

TA貢獻13條經(jīng)驗 獲得超14個贊

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

查看完整回答
反對 回復 2016-11-14
?
秋涼念夏y

TA貢獻6條經(jīng)驗 獲得超2個贊

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

查看完整回答
反對 回復 2016-11-14
?
sntatas

TA貢獻53條經(jīng)驗 獲得超11個贊

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

查看完整回答
反對 回復 2016-11-14
?
星鴻

TA貢獻6條經(jīng)驗 獲得超0個贊

沒區(qū)別吧,都是dog的對象

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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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