国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 如何解決Java中的多重繼承問題

如何解決Java中的多重繼承問題

來源:千鋒教育
發布人:syq
時間: 2022-09-16 15:11:01 1663312261

  Java是當今最流行的面向對象編程語言之一。由于它是獨立于平臺的,因此您可以在每種類型的設備和每個操作系統上找到 Java 應用程序。而且由于Java相對容易學習,因此它是許多程序員學習的第一批語言之一。

如何解決Java中的多重繼承問題

  您應該熟悉的 Java 的一個重要特性是類繼承。繼承允許程序員通過促進類重用來優化代碼。如果可以重用已經過測試和調試的代碼,軟件開發生命周期將變得更短且成本更低。

  雖然理論上是一個簡單的概念,但編碼繼承關系需要注意細節。對于多重繼承尤其如此,其中單個子類從多個父類繼承屬性。

  Java拒絕多重繼承關系,因為它們會產生歧義,但是如果您知道該怎么做,有幾種方法可以實現許多相同的效果。

  在本文中,我們將研究多重繼承的問題,并討論Java中的替代編碼選項。

  繼承術語

  有時,要成為一名成功的程序員,你必須學會解決問題,以便找到常見錯誤或問題的解決方法。這是安全智能編碼的必要部分。

  其中一個問題涉及Java中的多重繼承(或者更確切地說,缺乏多重繼承)。

1

  要完全理解 Java 中的繼承,您需要熟悉基本的面向對象編程 (OOP) 繼承術語。

  類: 類是面向對象編程語言中的基本模板結構。類定義一組對象的公共屬性。

  父類:父類也稱為基類或超類,是為子類提供功能的可擴展類。這就是可重用性發揮作用的地方。創建子類時,將重用父類定義和函數。

  兒童班:更一般地稱為子類,子類從另一個類繼承特征。子類是擴展類或派生類。

  遺產:父類和子類之間的關系。

  輸出讀取繼承類型

  目前有許多流行的面向對象編程語言在使用,包括 Java、C++、JavaScript、Python、PHP、Ruby 和 Perl。雖然繼承是這些 OOP 語言的常見概念,但并非所有繼承類型都存在于每種語言中。

  了解您正在使用的特定語言中的一般繼承類型和繼承限制至關重要。您對繼承的了解越多,您就越能有效地成為一名軟件開發人員。

  Java 支持的繼承類型包括:

  單級繼承:當子類從單個父類派生功能時。

  多級繼承:這是單級繼承的分層形式。在多級繼承中,子類還可以充當其他子類的父類。每個級別之間的關系都是線性的 - 沒有分支像多重繼承那樣延伸到上面。然后,最終的子類具有其上方每個級別的功能。

  分層繼承:與多重繼承相反。在分層繼承中,單個父類具有多個子類。因此,它不是在上面有分支,而是在下面分支。

  混合繼承:顧名思義,混合繼承是其他繼承類型的組合。

  除了上面的繼承類型之外,Java 還支持其他類型。

  多重繼承:在多重繼承中,一個子類具有多個父類。雖然 Java 和 JavaScript 不支持多重繼承,但 OOP 語言(如C++支持多重繼承)

  多路徑繼承:多級、多級和分層繼承的混合體,在多路徑繼承中,子類從父類和父類的多個子類派生其特性和功能。因為多路徑繼承依賴于多重繼承,所以 Java 不支持它的使用。

  為什么 Java 不支持多重繼承

  多重繼承的主要問題是,它有可能在子類中產生歧義。在1995年的概述白皮書中,Java首席設計師詹姆斯·高斯林(James Gosling)指出,多重繼承的問題是創建Java的動機之一。

  多重繼承所固有的困難在鉆石問題中表現得最為明顯。在菱形問題中,父類 A 有兩個不同的子類 B 和 C;也就是說,子類 B 和 C 擴展了類 A。

2

  現在我們創建一個新的子類 D,它同時擴展了類 B 和類 C.請注意,我們有多重繼承(D 擴展 B 和 C)、分層繼承(B 和 C 擴展 A)和多級繼承(D 擴展 A、B 和 C)。

  在菱形問題中,子類 B 和 C 從父類 A 繼承方法。B 和 C 都重寫繼承的方法。但是B和C中的新方法相互沖突。

  終極子類 D 從其多個父級 B 和 C 繼承兩個獨立且沖突的方法。不清楚應該使用哪種方法類D,因此存在歧義。其他 OOP 編程語言實現了各種方法來解決多重繼承歧義。

  如何解決Java中的多重繼承問題

  僅僅因為多重繼承有問題并不意味著它沒有用。在許多情況下,您可能希望一個類具有來自其他多個類的功能。

  想想當你成為一個非常成功的軟件開發人員時,你會買到特斯拉跑車。它將從跑車類和電動汽車類中汲取特征。

  或者,也許您正在使用私有瀏覽器閱讀本文,該文章具有在線數據隱私解決方案類和常規 Internet 瀏覽器類的功能。

  但是你不能在Java中擴展多個類。那么Java如何處理多重繼承問題呢?

  好吧,它使用稱為接口的結構。接口是抽象類型,用于指定要實現的類的行為。由于它們是抽象的,因此接口不包含有關其行為的詳細說明。相反,這些類提供了接口行為的具體實現。

  接口具有以下幾個定義特征:

  與類不同,您不實例化接口。相反,類實現接口

  接口僅包含公共常量定義和方法標頭

  接口只能擴展其他接口,而不能擴展類

  接口可以擴展多個接口,類可以實現多個接口

  現在,我們可以有效地繞過接口的菱形問題。回想一下,只有接口只能擴展其他接口,并且任何需要多個繼承特征的類都必須實現多個接口,我們可以重新定義菱形問題類。

  以前的類 A、B 和 C 現在變成了接口 A、B 和 C.接口 B 和 C 仍然擴展了接口 A,但這些接口中沒有具體的函數,只有定義的行為。類 D 仍然是一個類,它負責接口 B 和 C 中的行為的具體實現。

  請注意此處的一個關鍵區別:D 類不是擴展接口 B 和 C。相反,它正在實施它們。因此,您實際上沒有多重繼承。相反,你只是重新定義了問題。

  了解繼承對于任何有效的編碼人員都是必要的。對于 Java 程序員來說,了解繼承的局限性以及針對傳統多重繼承問題的內置 Java 解決方法同樣重要。

  學習如何在Java中放置接口以重新創建多重繼承的效果將提高您的效率和可雇用性。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
開班信息
北京校區
  • 北京校區
  • 大連校區
  • 廣州校區
  • 成都校區
  • 杭州校區
  • 長沙校區
  • 合肥校區
  • 南京校區
  • 上海校區
  • 深圳校區
  • 武漢校區
  • 鄭州校區
  • 西安校區
  • 青島校區
  • 重慶校區
  • 太原校區
  • 沈陽校區
  • 南昌校區
  • 哈爾濱校區