使用super關鍵字 訪問超類成員
如果你的方法覆蓋了它的一個超類的方法,你可以通過使用關鍵字super來調用被重寫的方法,你也可以使用super來引用隱藏字段(盡管不鼓勵隱藏字段),慮這個類,Superclass:
public class Superclass { public void printMethod() { System.out.println("Printed in Superclass."); } }
這是一個名為Subclass的子類,它重寫了printMethod():
public class Subclass extends Superclass { // overrides printMethod in Superclass public void printMethod() { super.printMethod(); System.out.println("Printed in Subclass"); } public static void main(String[] args) { Subclass s = new Subclass(); s.printMethod(); } }
在Subclass中,簡單名稱printMethod()引用在Subclass中聲明的名稱,它覆蓋了Superclass中的名稱,因此,要引用從Superclass繼承的printMethod(),Subclass必須使用限定名,使用super,編譯和執行Subclass將打印以下內容:
Printed in Superclass. Printed in Subclass子類構造函數
以下示例說明如何使用super關鍵字來調用超類的構造函數,回想一下Bicycle的例子,MountainBike是Bicycle的子類,這是MountainBike(子類)構造函數,它調用超類構造函數,然后添加自己的初始化代碼:
public MountainBike(int startHeight, int startCadence, int startSpeed, int startGear) { super(startCadence, startSpeed, startGear); seatHeight = startHeight; }
調用超類構造函數必須是子類構造函數中的第一行。
調用超類構造函數的語法是:
super();
或
super(parameter list);
使用super(),可以調用超類無參數構造函數,使用super(parameter list),將調用具有匹配參數列表的超類構造函數。
注意:如果構造函數沒有顯式調用超類構造函數,Java編譯器會自動插入對超類的無參數構造函數的調用,如果超類沒有無參數構造函數,則會出現編譯時錯誤,Object確實有這樣的構造函數,因此如果Object是唯一的超類,則沒有問題。
如果子類構造函數顯式或隱式調用其超類的構造函數,你可能會認為將調用一整個構造函數鏈,一直返回Object的構造函數,事實上,情況就是這樣,它被稱為構造函數鏈,當需要很長的類層次時,你需要意識到這一點。
上一篇:多態性 下一篇:Object作為超類文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72875.html
多態性 多態性的字典定義是指生物學中的原理,其中生物體或物種可以具有許多不同的形式或階段,這個原則也可以應用于面向對象的編程和像Java語言之類的語言,類的子類可以定義它們自己的唯一行為,但仍然共享父類的一些相同功能。 可以通過對Bicycle類的微小修改來演示多態性,例如,可以將printDescription方法添加到顯示當前存儲在實例中的所有數據的類中。 public void printD...
重寫和隱藏方法 實例方法 子類中的實例方法的簽名(名稱,加上其參數的數量和類型)和返回類型與超類中的實例方法相同,將覆蓋超類的方法。 子類覆蓋方法的能力允許類從行為足夠接近的超類繼承,然后根據需要修改行為,重寫方法與它重寫的方法具有相同的名稱、數量和參數類型,以及返回類型。重寫方法還可以返回由被重寫方法返回的類型的子類型,此子類型稱為協變返回類型。 覆蓋方法時,你可能希望使用@Override注解...
摘要:未來的主要發布基于。在中調用函數支持從代碼中直接調用定義在腳本文件中的函數。下面的函數稍后會在端調用為了調用函數,你首先需要將腳本引擎轉換為。調用函數將結果輸出到,所以我們會首先看到輸出。幸運的是,有一套補救措施。 原文:Java 8 Nashorn Tutorial 譯者:飛龍 協議:CC BY-NC-SA 4.0 這個教程中,你會通過簡單易懂的代碼示例,來了解Nashorn Ja...
繼承 在前面的課程中,你已經多次看到了繼承,在Java語言中,類可以從其他類派生,從而從這些類繼承字段和方法。 定義:從另一個類派生的類稱為子類(也是派生類,擴展類或子類),派生子類的類稱為超類(也是基類或父類)。 除了Object沒有超類,每個類都有一個且只有一個直接超類(單繼承),在沒有任何其他顯式超類的情況下,每個類都隱式地是Object的子類。 類可以從派生自類的類派生的類派生,依此類推,...
泛型通配符使用指南 學習使用泛型編程時更困惑的一個方面是確定何時使用上界通配符以及何時使用下界通配符,此頁面提供了設計代碼時要遵循的一些準則。 對于本文的討論,將變量看作提供的兩個功能之一是有幫助的: 一個In變量 in變量向代碼提供數據,想象一下帶有兩個參數的復制方法:copy(src, dest),src參數提供要復制的數據,因此它是in參數。 一個Out變量 out變量保存數據以供其他地方使...
閱讀 1010·2021-11-22 13:52
閱讀 924·2019-08-30 15:44
閱讀 570·2019-08-30 15:43
閱讀 2424·2019-08-30 12:52
閱讀 3473·2019-08-29 16:16
閱讀 637·2019-08-29 13:05
閱讀 2943·2019-08-26 18:36
閱讀 1975·2019-08-26 13:46