java不支持多重繼承 java中一個(gè)接口可以繼承幾個(gè)接口嗎?
java中一個(gè)接口可以繼承幾個(gè)接口嗎?(1)Java中的類(lèi)繼承是單繼承,但接口可以是多繼承。(2) 不允許類(lèi)多重繼承的主要原因是,如果a同時(shí)繼承B和C,并且B和C同時(shí)有一個(gè)d方法,那么a如何決定繼承哪
java中一個(gè)接口可以繼承幾個(gè)接口嗎?
(1)Java中的類(lèi)繼承是單繼承,但接口可以是多繼承。(2) 不允許類(lèi)多重繼承的主要原因是,如果a同時(shí)繼承B和C,并且B和C同時(shí)有一個(gè)d方法,那么a如何決定繼承哪個(gè)方法?但是,接口沒(méi)有這樣的問(wèn)題。接口都是抽象方法繼承,所以誰(shuí)繼承它們并不重要,所以接口可以繼承多個(gè)接口。
Java為什么不支持多繼承?
首先,學(xué)習(xí)java應(yīng)該從生活中探索。這并不復(fù)雜。比如,一個(gè)人有生父,對(duì)吧!所以Java的例子會(huì)在課堂生活中得到很好的體現(xiàn)!繼承的主要目的是從父繼承,實(shí)現(xiàn)更好的代碼重用性
!接下來(lái),讓我們從代碼級(jí)別學(xué)習(xí):
假設(shè)a->繼承B,那么我們可以得到B類(lèi)的類(lèi)a中可以使用的方法(注意,這里沒(méi)有提到修飾符的問(wèn)題)
然后假設(shè)a->繼承B,a->此時(shí)繼承C,類(lèi)B和類(lèi)C中聲明了一個(gè)同名的方法,因此類(lèi)a很尷尬。類(lèi)A不重寫(xiě)類(lèi)B和類(lèi)C中的方法,那么類(lèi)A使用B怎么辦?還是C?
我覺(jué)得a自己很困惑,哈哈。所以為了避免這種尷尬的事情,Java不允許出現(xiàn)這種情況。但值得注意的是:Java在有多重繼承的時(shí)候,是接口:
這里很好玩,為什么可以接口呢?注意這個(gè)接口是一個(gè)規(guī)則的體現(xiàn),它描述了一個(gè)標(biāo)準(zhǔn):
假設(shè)Employee類(lèi)繼承了human,我們知道human有一些特性,但是不同的Employee類(lèi)有不同的職責(zé),比如:Employee a(Employee的一個(gè)例子),他是一個(gè)職員,他很會(huì)使用電腦,而且他會(huì)打籃球。同樣,員工B(一個(gè)員工的例子),他是一個(gè)財(cái)務(wù)員,他也會(huì)電腦,但他會(huì)踢足球。在這個(gè)時(shí)候,會(huì)有一個(gè)問(wèn)題:我們要把上面三個(gè)功能:玩電腦,踢足球和打籃球放在人類(lèi)當(dāng)中嗎?我們知道Employee類(lèi)是從人類(lèi)繼承來(lái)的。
答案是否定的,因?yàn)檫@將導(dǎo)致父類(lèi)過(guò)于膨脹。此時(shí),界面出現(xiàn),EMP extensions person implementation playfootball。這樣更好嗎!如果一個(gè)球員踢得好,也許他也熟悉足球的規(guī)則。然后是中文和英文的橄欖球擴(kuò)展。因?yàn)橛泻芏鄻?biāo)準(zhǔn)。一個(gè)足球運(yùn)動(dòng)員能踢足球,他也能很好地沖刺
!我不知道這是否能讓你明白,因?yàn)檫@都是親力親為的,所以我真的不想浪費(fèi)精力。如果你有任何問(wèn)題,可以直接關(guān)注我的標(biāo)題:它是蛇頭病,只是有一個(gè)私人聊天!嘿,嘿,或者注意右上角的波浪!哈哈,我以前也發(fā)表過(guò)這方面的文章。你可以看看