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