摘要:的繼承具有單繼承的特點,每個子類只有一個直接父類。繼承的特點的繼承通過關(guān)鍵字來實現(xiàn),實現(xiàn)繼承的類被稱為子類,被繼承的類被稱為父類,有的也稱其為基類超類。是提供的一個關(guān)鍵字,用于限定該對象調(diào)用它從父類繼承得到的實例變量或方法。
繼承是面向?qū)ο蟮娜筇卣髦?,也是軟件復用的重要手段。Java的繼承具有單繼承的特點,每個子類只有一個直接父類。
繼承的特點Java的繼承通過extends關(guān)鍵字來實現(xiàn),實現(xiàn)繼承的類被稱為子類,被繼承的類被稱為父類,有的也稱其為基類、超類。子類是對父類的拓展,子類是一種特殊的父類。
如果定義一個java類時并未顯示指定這個類的直接父類,則這個類默認拓展java.lang.Object類。
這種子類包含與父類同名方法的現(xiàn)象被稱為方法重寫,也被稱為方法覆蓋。方法的重寫要遵循“兩同兩小一大”規(guī)則。
兩同 即方法名相同,形參列表相同;
兩小 指的是子類方法返回值類型應比父類返回值類型更小或相等,子類方法聲明拋出的異常類型應該比父類方法聲明拋出的異常類型更小或相等;
一大 指的是子類方法的訪問權(quán)限應比父類方法的訪問權(quán)限更大或相等。
尤其需要指出的是,覆蓋方法和被覆蓋方法要么都是類方法,要么都是實例方法,不能一個是類方法,一個是實例方法
當子類覆蓋了父類方法后,子類的對象將無法訪問父類中被覆蓋的方法,但可以在子類方法中調(diào)用父類中被覆蓋的方法。如果需要在子類方法中調(diào)用父類中被覆蓋的方法,則可以使用super(被覆蓋的是實例方法)或者父類類名(被覆蓋的是類方法)作為調(diào)用者來調(diào)用父類中被覆蓋的方法。
如果父類具有private訪問權(quán)限,則該方法對其子類是隱藏的,因此其子類無法訪問該方法,也就是無法重寫該方法。如果子類中定義了一個與父類private方法具有相同的方法名、相同的形參列表、相同的方法返回值類型的方法,依然不是重寫,只是在子類中重新定義了一個新方法。
重載主要發(fā)生在同一個類的多個同名方法之間,而重寫發(fā)生在子類和父類的同名方法之間。它們之間的聯(lián)系很少,除了二者都是發(fā)生在方法之間,并且要求方法名相同之外,沒有太大相似之處。當然,父類方法和子類方法之間也可能發(fā)生重載,因為子類會獲得父類方法。
super限定如果需要在子類方法中調(diào)用父類被覆蓋的實例方法,則可以使用super限定來調(diào)用父類被覆蓋的實例方法。
super是Java提供的一個關(guān)鍵字,super用于限定該對象調(diào)用它從父類繼承得到的實例變量或方法。
正如this不能出現(xiàn)在static修飾的方法中一樣,super也不能出現(xiàn)在static修飾的方法中。static修飾的方法是屬于該類的,該方法的調(diào)用者可能是一個類,而不是對象,因而super限定也就失去了意義。
不管是否使用super調(diào)用來執(zhí)行父類構(gòu)造器的初始化代碼,子類構(gòu)造器總會調(diào)用父類構(gòu)造器一次。子類構(gòu)造器調(diào)用父類構(gòu)造器分如下幾種情況:
子類構(gòu)造器執(zhí)行體的第一行使用super顯示調(diào)用父類構(gòu)造器,系統(tǒng)將根據(jù)super調(diào)用里傳入的實參列表調(diào)用父類對應的構(gòu)造器。
子類構(gòu)造器執(zhí)行體的第一行代碼使用this顯示調(diào)用本類中重載的構(gòu)造器,系統(tǒng)將根據(jù)this調(diào)用里傳入的實參列表調(diào)用本類中的另一個構(gòu)造器,執(zhí)行本類中另一個構(gòu)造器是即會調(diào)用父類構(gòu)造器。
子類構(gòu)造器執(zhí)行體中既沒有super調(diào)用,也沒有this調(diào)用,系統(tǒng)將會在執(zhí)行子類構(gòu)造器之前,隱式調(diào)用父類無參數(shù)的構(gòu)造器。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68522.html
繼承 在前面的課程中,你已經(jīng)多次看到了繼承,在Java語言中,類可以從其他類派生,從而從這些類繼承字段和方法。 定義:從另一個類派生的類稱為子類(也是派生類,擴展類或子類),派生子類的類稱為超類(也是基類或父類)。 除了Object沒有超類,每個類都有一個且只有一個直接超類(單繼承),在沒有任何其他顯式超類的情況下,每個類都隱式地是Object的子類。 類可以從派生自類的類派生的類派生,依此類推,...
摘要:格式子類名父類名好處提高了代碼的復用性提高了代碼的維護性通過少量的修改,滿足不斷變化的具體要求讓類與類產(chǎn)生了一個關(guān)系,是多態(tài)的前提要求有共同的屬性或操作有細微的差別繼承的弊端讓類的耦合性增強。 showImg(https://segmentfault.com/img/remote/1460000019321816?w=600&h=242); 第二階段 JAVA面向?qū)ο?第二章 繼承 其...
摘要:前言是面對對象的語言,因此有必要單獨紀錄下對象的各種定義和理解。面對對象基本概述概述是基于面向過程的變成思想,是對面向過程的一種封裝。面對對象開發(fā)就是不斷的創(chuàng)建對象,使用對象,指揮對象做事情。面對對象設計其實就是在管理和維護對象之間的關(guān)系。 前言 java是面對對象的語言,因此有必要單獨紀錄下對象的各種定義和理解。 面對對象,主要包括:面向?qū)ο笏枷?,類與對象及其使用,對象的內(nèi)存圖,成...
摘要:上學學的完全沒印象,基礎爛的不行,最近項目主要是改,有時間就看了一下這本書補一下基礎在寫項目時,老用到繼承,但是對其了解不深,會用但是不理解概念繼承是面向?qū)ο缶幊碳夹g(shù)的一塊基石,因為它允許創(chuàng)建分等級層次的類。 上學學的完全沒印象,Java基礎爛的不行,最近項目主要是改bug,有時間就看了一下Head First Java這本書補一下基礎 在寫項目時,老用到Java繼承,但是對其了解不深...
摘要:實現(xiàn)多態(tài)的三個必要條件繼承在多態(tài)中必須存在有繼承關(guān)系的子類和父類。參考面試題解惑系列九繼承多態(tài)重載和重寫面向?qū)ο笕筇匦苑庋b,繼承,多態(tài)以及抽象接口的介紹 版權(quán)聲明:本文由吳仙杰創(chuàng)作整理,轉(zhuǎn)載請注明出處:https://segmentfault.com/a/1190000009141566 1. 面向?qū)ο缶幊痰娜筇匦?Java 面向?qū)ο缶幊逃腥筇匦裕悍庋b、繼承、多態(tài)。 1.1 封裝...
閱讀 3301·2023-04-26 02:09
閱讀 2608·2021-11-24 09:39
閱讀 3296·2021-11-16 11:52
閱讀 3628·2021-10-26 09:50
閱讀 2785·2021-10-08 10:05
閱讀 2472·2021-09-22 15:25
閱讀 3314·2019-08-30 13:14
閱讀 928·2019-08-29 17:06