摘要:的繼承具有單繼承的特點,每個子類只有一個直接父類。繼承的特點的繼承通過關鍵字來實現,實現繼承的類被稱為子類,被繼承的類被稱為父類,有的也稱其為基類超類。是提供的一個關鍵字,用于限定該對象調用它從父類繼承得到的實例變量或方法。
繼承是面向對象的三大特征之一,也是軟件復用的重要手段。Java的繼承具有單繼承的特點,每個子類只有一個直接父類。
繼承的特點Java的繼承通過extends關鍵字來實現,實現繼承的類被稱為子類,被繼承的類被稱為父類,有的也稱其為基類、超類。子類是對父類的拓展,子類是一種特殊的父類。
如果定義一個java類時并未顯示指定這個類的直接父類,則這個類默認拓展java.lang.Object類。
這種子類包含與父類同名方法的現象被稱為方法重寫,也被稱為方法覆蓋。方法的重寫要遵循“兩同兩小一大”規則。
兩同 即方法名相同,形參列表相同;
兩小 指的是子類方法返回值類型應比父類返回值類型更小或相等,子類方法聲明拋出的異常類型應該比父類方法聲明拋出的異常類型更小或相等;
一大 指的是子類方法的訪問權限應比父類方法的訪問權限更大或相等。
尤其需要指出的是,覆蓋方法和被覆蓋方法要么都是類方法,要么都是實例方法,不能一個是類方法,一個是實例方法
當子類覆蓋了父類方法后,子類的對象將無法訪問父類中被覆蓋的方法,但可以在子類方法中調用父類中被覆蓋的方法。如果需要在子類方法中調用父類中被覆蓋的方法,則可以使用super(被覆蓋的是實例方法)或者父類類名(被覆蓋的是類方法)作為調用者來調用父類中被覆蓋的方法。
如果父類具有private訪問權限,則該方法對其子類是隱藏的,因此其子類無法訪問該方法,也就是無法重寫該方法。如果子類中定義了一個與父類private方法具有相同的方法名、相同的形參列表、相同的方法返回值類型的方法,依然不是重寫,只是在子類中重新定義了一個新方法。
重載主要發生在同一個類的多個同名方法之間,而重寫發生在子類和父類的同名方法之間。它們之間的聯系很少,除了二者都是發生在方法之間,并且要求方法名相同之外,沒有太大相似之處。當然,父類方法和子類方法之間也可能發生重載,因為子類會獲得父類方法。
super限定如果需要在子類方法中調用父類被覆蓋的實例方法,則可以使用super限定來調用父類被覆蓋的實例方法。
super是Java提供的一個關鍵字,super用于限定該對象調用它從父類繼承得到的實例變量或方法。
正如this不能出現在static修飾的方法中一樣,super也不能出現在static修飾的方法中。static修飾的方法是屬于該類的,該方法的調用者可能是一個類,而不是對象,因而super限定也就失去了意義。
不管是否使用super調用來執行父類構造器的初始化代碼,子類構造器總會調用父類構造器一次。子類構造器調用父類構造器分如下幾種情況:
子類構造器執行體的第一行使用super顯示調用父類構造器,系統將根據super調用里傳入的實參列表調用父類對應的構造器。
子類構造器執行體的第一行代碼使用this顯示調用本類中重載的構造器,系統將根據this調用里傳入的實參列表調用本類中的另一個構造器,執行本類中另一個構造器是即會調用父類構造器。
子類構造器執行體中既沒有super調用,也沒有this調用,系統將會在執行子類構造器之前,隱式調用父類無參數的構造器。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68522.html
繼承 在前面的課程中,你已經多次看到了繼承,在Java語言中,類可以從其他類派生,從而從這些類繼承字段和方法。 定義:從另一個類派生的類稱為子類(也是派生類,擴展類或子類),派生子類的類稱為超類(也是基類或父類)。 除了Object沒有超類,每個類都有一個且只有一個直接超類(單繼承),在沒有任何其他顯式超類的情況下,每個類都隱式地是Object的子類。 類可以從派生自類的類派生的類派生,依此類推,...
摘要:前言是面對對象的語言,因此有必要單獨紀錄下對象的各種定義和理解。面對對象基本概述概述是基于面向過程的變成思想,是對面向過程的一種封裝。面對對象開發就是不斷的創建對象,使用對象,指揮對象做事情。面對對象設計其實就是在管理和維護對象之間的關系。 前言 java是面對對象的語言,因此有必要單獨紀錄下對象的各種定義和理解。 面對對象,主要包括:面向對象思想,類與對象及其使用,對象的內存圖,成...
摘要:上學學的完全沒印象,基礎爛的不行,最近項目主要是改,有時間就看了一下這本書補一下基礎在寫項目時,老用到繼承,但是對其了解不深,會用但是不理解概念繼承是面向對象編程技術的一塊基石,因為它允許創建分等級層次的類。 上學學的完全沒印象,Java基礎爛的不行,最近項目主要是改bug,有時間就看了一下Head First Java這本書補一下基礎 在寫項目時,老用到Java繼承,但是對其了解不深...
摘要:實現多態的三個必要條件繼承在多態中必須存在有繼承關系的子類和父類。參考面試題解惑系列九繼承多態重載和重寫面向對象三大特性封裝,繼承,多態以及抽象接口的介紹 版權聲明:本文由吳仙杰創作整理,轉載請注明出處:https://segmentfault.com/a/1190000009141566 1. 面向對象編程的三大特性 Java 面向對象編程有三大特性:封裝、繼承、多態。 1.1 封裝...
閱讀 3280·2023-04-26 02:09
閱讀 2574·2021-11-24 09:39
閱讀 3268·2021-11-16 11:52
閱讀 3614·2021-10-26 09:50
閱讀 2772·2021-10-08 10:05
閱讀 2456·2021-09-22 15:25
閱讀 3299·2019-08-30 13:14
閱讀 908·2019-08-29 17:06