欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java為何不能多繼承的原因詳解

 更新時(shí)間:2019年06月05日 09:45:38   作者:(*-*)浩  
多重繼承是一個(gè)子類(lèi)從多個(gè)父類(lèi)中繼承屬性和方法。C++, Common Lisp是時(shí)下支持多重繼承的流行語(yǔ)言。那java為何不能多繼承呢,下面小編帶大家來(lái)一起學(xué)習(xí)一下吧

多繼承指一個(gè)子類(lèi)能同時(shí)繼承于多個(gè)父類(lèi),從而同時(shí)擁有多個(gè)父類(lèi)的特征,但缺點(diǎn)是顯著的。

1.若子類(lèi)繼承的父類(lèi)中擁有相同的成員變量,子類(lèi)在引用該變量時(shí)將無(wú)法判別使用哪個(gè)父類(lèi)的成員變量。

如:

public class classA // 父類(lèi) classA
{
private int num = 0; 
}
public class classB // 父類(lèi) classB
{
private int num = 1;
}
public class classC extends classA,classB // 子類(lèi) classC 繼承于 classA 和 classB
{
public static void main(String [] args)
{
classC obj = new classC();
obj.print(); // 調(diào)用父類(lèi)成員變量 num , 那 num 等于 0 還是 1 ?
} 
public void print()
{
System.out.println(super.num);
} 
}

2.若一個(gè)子類(lèi)繼承的多個(gè)父類(lèi)擁有相同方法,同時(shí)子類(lèi)并未覆蓋該方法(若覆蓋,則直接使用子類(lèi)中該方法),那么調(diào)用該方法時(shí)將無(wú)法確定調(diào)用哪個(gè)父類(lèi)的方法。

如:

public class classA // 父類(lèi) classA
{
public void fun()
{
System.out.print("hello");
} 
}
public class classB // 父類(lèi) classB
{
public void fun()
{
System.out.print("hello");
}
}
public class classC extends classA,classB
{
public static void main(String [] args)
{
classC t = new classC();
t.print();
}
public void print()
{
super.fun(); // 調(diào)用父類(lèi)中 fun 方法,但由于classA、classB都有fun()方法,將無(wú)法確定使用
// 哪個(gè)父類(lèi)中的方法
}
}

因此,Java僅允許單繼承,即一個(gè)子類(lèi)只能繼承于一個(gè)父類(lèi)。但為了拓展子類(lèi)的功能,Java使用接口以克服不使用多繼承帶來(lái)的不足。

接口是一個(gè)特殊的抽象類(lèi),接口中成員變量均默認(rèn)為 static final 類(lèi)型,即常量,且接口中的方法都為抽象的,都沒(méi)有方法體。

具體方法只能由實(shí)現(xiàn)接口的類(lèi)實(shí)現(xiàn),在調(diào)用的時(shí)候始終只會(huì)調(diào)用實(shí)現(xiàn)類(lèi)的方法(不存在歧義),因此不存在 多繼承的第二個(gè)缺點(diǎn);而又因?yàn)榻涌谥挥徐o態(tài)的常量,但是由于靜態(tài)變量是在編譯期決定調(diào)用關(guān)系的,即使存在一定的沖突也會(huì)在編譯時(shí)提示出錯(cuò);而引用靜態(tài)變量一般直接使用類(lèi)名或接口名,從而避免產(chǎn)生歧義,因此也不存在多繼承的第一個(gè)缺點(diǎn)。 對(duì)于一個(gè)接口繼承多個(gè)父接口的情況也一樣不存在這些缺點(diǎn)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • idea如何查看安裝插件的位置

    idea如何查看安裝插件的位置

    這篇文章主要介紹了idea如何查看安裝插件的位置問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • JavaEE開(kāi)發(fā)之SpringMVC中的自定義消息轉(zhuǎn)換器與文件上傳

    JavaEE開(kāi)發(fā)之SpringMVC中的自定義消息轉(zhuǎn)換器與文件上傳

    本篇文章主要介紹了SpringMVC的相關(guān)知識(shí)。同時(shí)也會(huì)介紹到j(luò)s、css這些靜態(tài)文件的加載配置,以及服務(wù)器推送的兩種實(shí)現(xiàn)方式并且給出了兩者的區(qū)別。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • SpringBoot前后端分離實(shí)現(xiàn)驗(yàn)證碼操作

    SpringBoot前后端分離實(shí)現(xiàn)驗(yàn)證碼操作

    驗(yàn)證碼的功能是防止非法用戶(hù)惡意去訪(fǎng)問(wèn)登錄接口而設(shè)置的一個(gè)功能,今天我們就來(lái)看看在前后端分離的項(xiàng)目中,SpringBoot是如何提供服務(wù)的
    2022-05-05
  • Java跨域問(wèn)題的處理詳解

    Java跨域問(wèn)題的處理詳解

    這篇文章主要給大家介紹了關(guān)于Java跨域問(wèn)題處理的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • 分布式面試消息隊(duì)列解決消息重復(fù)保證消息順序

    分布式面試消息隊(duì)列解決消息重復(fù)保證消息順序

    這篇文章主要介紹了分布式面試問(wèn)題:分布式消息隊(duì)列如何解決消息重復(fù)并保證消息順序面試問(wèn)題解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • java集合模擬實(shí)現(xiàn)斗地主洗牌和發(fā)牌

    java集合模擬實(shí)現(xiàn)斗地主洗牌和發(fā)牌

    這篇文章主要為大家詳細(xì)介紹了java集合模擬實(shí)現(xiàn)斗地主洗牌和發(fā)牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Spring MVC中異常處理的三種方式

    Spring MVC中異常處理的三種方式

    這篇文章主要給大家介紹了關(guān)于Spring MVC中異常處理的三種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring MVC具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 整理java讀書(shū)筆記十五之java中的內(nèi)部類(lèi)

    整理java讀書(shū)筆記十五之java中的內(nèi)部類(lèi)

    內(nèi)部類(lèi)是指在一個(gè)外部類(lèi)的內(nèi)部再定義一個(gè)類(lèi)。類(lèi)名不需要和文件夾相同。本文給大家分享java讀書(shū)筆記十五之java中的內(nèi)部類(lèi),對(duì)java讀書(shū)筆記相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • java dom4j解析xml文件代碼實(shí)例分享

    java dom4j解析xml文件代碼實(shí)例分享

    這篇文章主要介紹了java dom4j解析xml文件的方法,分享給大家參考
    2013-12-12
  • 關(guān)于maven打包出錯(cuò)的解決方案

    關(guān)于maven打包出錯(cuò)的解決方案

    這篇文章主要介紹了關(guān)于maven打包出錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評(píng)論