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

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

為什么Java不支持多繼承?

為什么Java不支持多繼承?

喵啊喵啊喵 2016-09-18 19:22:12
查看完整描述

6 回答

已采納
?
蕭雁翎

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

先舉一個(gè)多重繼承的例子,我們定義一個(gè)動(dòng)物(類)既是狗(父類1)也是貓(父類2),兩個(gè)父類都有“叫”這個(gè)方法。那么當(dāng)我們調(diào)用“叫”這個(gè)方法時(shí),它就不知道是狗叫還是貓叫了,這就是多重繼承的沖突。



而java對(duì)此的解決方法是,一個(gè)物體的本質(zhì)只能有一個(gè)。一個(gè)動(dòng)物只能是狗或只能是貓,如果你想創(chuàng)造一個(gè)會(huì)玩毛線球會(huì)玩激光(被激光玩?)的狗,那么只需要?jiǎng)?chuàng)造一個(gè)描述這類行為的接口(就叫玩耍吧),然后在自己的類里面實(shí)現(xiàn)“玩?!苯涌?,具體實(shí)現(xiàn)這些玩的行為,最終你同樣會(huì)得到一個(gè)既像狗又像貓的動(dòng)物。如果你想讓這個(gè)動(dòng)物叫起來(lái)像貓而不是狗,那么使用覆寫(xiě)(override)機(jī)制,子類里重新定義“叫”這個(gè)行為即可。但是無(wú)論如何,這樣得到的類是絕對(duì)不會(huì)有多重繼承的沖突的。

再來(lái)說(shuō)說(shuō)abstract class和interface的區(qū)別。

abstract class的核心在于,我知道一類物體的部分行為(和屬性),但是不清楚另一部分的行為(和屬性),所以我不能自己實(shí)例化。還是剛才那個(gè)例子,如果你有個(gè)abstract class叫哺乳動(dòng)物,那么你可以定義他們胎生,恒定體溫等共同的行為,但是具體“叫”這個(gè)行為時(shí),你得留著讓非abstract的狗和貓等等子類具體實(shí)現(xiàn)。

interface的核心在于,我只知道這個(gè)物體能干什么,具體是什么不需要遵從類的繼承關(guān)系。比如上述的“玩?!眎nterface,狗有狗的玩法,貓有貓的玩法,妖魔鬼怪機(jī)器人都可以玩耍,只要你告訴我這個(gè)物體有玩耍接口,我就能讓它玩起來(lái)(??????) ?

所以abstract class和interface是不能互相替代的,interface不能定義(它只做了聲明)共同的行為,事實(shí)上它也不能定義“非常量”的變量。而abstract class只是一種分類的抽象,它不能橫跨類別來(lái)描述一類行為,它使得針對(duì)“別的分類方式”的抽象變得無(wú)法實(shí)現(xiàn)(所以需要接口來(lái)幫忙)。而多重繼承不但會(huì)造成沖突,還讓一個(gè)類變得不倫不類,看不出這個(gè)類的本質(zhì),所以java毅然舍棄掉了這個(gè)禍害。

不知題主有沒(méi)有理解一些。

查看完整回答
6 反對(duì) 回復(fù) 2016-09-19
?
帥帥嗒先鋒

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

我就不長(zhǎng)篇大論了。

多繼承容易引發(fā)沖突,單繼承對(duì)于后續(xù)的開(kāi)發(fā)容易理解,并且使得結(jié)構(gòu)清晰明了。
然后為了克服單繼承的弱點(diǎn),java便開(kāi)發(fā)了接口這個(gè)東西。代替多繼承來(lái)使用。

純手打,望采納。

查看完整回答
1 反對(duì) 回復(fù) 2016-09-19
?
ATWJSW

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

JAVA語(yǔ)言在早期的設(shè)計(jì)思想是簡(jiǎn)化,易于學(xué)習(xí)和使用,放棄了C++的部分功能。但現(xiàn)在也越來(lái)越復(fù)雜了。

查看完整回答
1 反對(duì) 回復(fù) 2016-09-18
?
漢江怪人

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

多繼承容易造成面向?qū)ο蟮母鞣N問(wèn)題,你想想啊,兒子繼承父親,多繼承就是繼承多個(gè)父親....好多爸爸,從面向?qū)ο蟮倪壿媶?wèn)題上來(lái)看這樣不好不好。 PS:不要再問(wèn)為什么C++支持多繼承。

查看完整回答
1 反對(duì) 回復(fù) 2016-09-18
?
小城阿哥

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

類定義屬性和方法 描述某一類事物的抽象
而接口定義的是行為 并不限于任何具體意向

按照邏輯上來(lái)說(shuō) 單繼承更明確 一個(gè)子類就應(yīng)該是其父類代表的事物中的某個(gè)更具體的類別 不應(yīng)該即是這種東西又是那種東西
而從實(shí)用角度上來(lái)說(shuō) 單繼承易讀 易維護(hù) 語(yǔ)義清晰 邏輯清楚

而接口則不同 接口只定義一些公共行為 比如有兩個(gè)接口 一個(gè)定義了跑這個(gè)動(dòng)作 另一個(gè)定義了走這個(gè)動(dòng)作 人這個(gè)類就可以同時(shí)實(shí)現(xiàn)這兩個(gè)接口所定義的行為

類對(duì)接口的implements稱作實(shí)現(xiàn) 不能叫做繼承

當(dāng)然 接口可以多繼承接口 因?yàn)榻涌谥欢x行為 并不包含類別的含義 不指代具體的某類事物 而且 從語(yǔ)義上來(lái)說(shuō) 接口對(duì)接口的繼承稱之為擴(kuò)展更為合適

查看完整回答
反對(duì) 回復(fù) 2016-09-18
?
噼喱啪啦

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

太過(guò)繁瑣,改進(jìn)了C++的多繼承,改成只有一個(gè)父類,這樣就不需要自己管理繁瑣的內(nèi)存分配與釋放,java 虛擬機(jī)就能好好工作了

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

添加回答

舉報(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)