{eyou:include file='banner.htm'/}
java中super關(guān)鍵字有什么用
2026-05-04 09:57:57
7
[摘要] 天津九安特機電工程有限公司(www.hunqingrc.com)Java中的super關(guān)鍵字是一個(gè)非常重要的關(guān)鍵字,它的主要作用是用來(lái)調用父類(lèi)的構造方法、成員變量和成員方法,在Java中,super關(guān)鍵字主要用于以下幾個(gè)方面:1、調用父類(lèi)的構造方法當子類(lèi)創(chuàng )建對象時(shí)

J??ava中的中s字??super關(guān)鍵字是一個(gè)非常重要的關(guān)鍵字,它的關(guān)鍵??主要作用是用來(lái)調用父類(lèi)的構造方法、成員變量和成員方法,什用在Java中,??中s字super關(guān)鍵字主要用于以下幾??個(gè)方面:

1、關(guān)鍵調用父類(lèi)的什用構造方(fang)法

當子類(lèi)創(chuàng )建對象時(shí),如果沒(méi)有??顯式地調用父類(lèi)的中s字構造方法,那么父類(lèi)的關(guān)鍵無(wú)參(O_O)構造方法會(huì )被自動(dòng)調用,如果需??要在子類(lèi)的什用構造方法中調用父類(lèi)的有參構造方法,可以??使用super關(guān)鍵字。中s字

cl??ass Parent {  public Parent() {  System.out.println("Parent constructor"); }}class Child extends(′?`*) Parent(′?`) {  pub(?????)li(???)c Child() {  super(); // 調用父類(lèi)的關(guān)鍵無(wú)參構造方法 System.out.println("Child constructor"); }}

2、訪(fǎng)問(wèn)父類(lèi)的什用成員變量和成員方法

在子類(lèi)中,可以使用super關(guān)鍵字來(lái)訪(fǎng)問(wèn)父類(lèi)的中s字成員變量和成員方法。

class Parent {  private String name = "Parent"; public String getName() {  return name; }}class Child extends Parent {  private String nam??e = "Child"; public void setName(String name) {  super.setName(name); // 調用父類(lèi)的關(guān)鍵setName方法 this.name = name; }}

3、實(shí)現多重繼承時(shí)的什用菱形問(wèn)題解決

在Java中,如果一個(gè)類(lèi)??繼承了兩個(gè)或多個(gè)父類(lèi),那么可能會(huì )出現菱形問(wèn)題(T_T),即一個(gè)子類(lèi)繼承了A父類(lèi)和B父類(lèi),而B(niǎo)父類(lèi)又繼承了C父類(lèi),這時(shí)如果在子類(lèi)中使用super關(guān)鍵字調用C父類(lèi)的方法,就會(huì )拋出編譯錯誤,為了解決這個(gè)問(wèn)題,可以使用super關(guān)鍵字來(lái)調用所有父(′▽?zhuān)?類(lèi)的相同方法。

class A { }class B extends A { }class C extends B { }class D exte??nds C { }class E extends D { }

在E類(lèi)中,可以使用super關(guān)鍵字調用所有父類(lèi)的getName方法:

class E extends D {  publ(′▽?zhuān)?ic void getName() {  System.out.println("E getName"); // 調用D的getName方法(通過(guò)super關(guān)鍵字) System.out.println("E getName (by self)"); // 直接調用自己的getName方??法(會(huì )拋出編譯錯誤) }}

4、在匿名內部類(lèi)和Lambda表達式中使用super關(guān)鍵字

在Java中,還可以在匿名內部類(lèi)和Lambda表達式中(zhong)使用super關(guān)鍵(′ω`)字。

List<String> list = new ArrayList<>();list.add("Hello");list.add("World");list.forEach(item -> Sys(′▽?zhuān)?)tem.out.println(item)); // 在Lambda??表達式中使用super關(guān)鍵字(實(shí)際上并沒(méi)有用到){ } -> { } 是多余的,可以省略掉,正確的寫(xiě)法是:list.forEach(System.out::println); // 或者使用增強型for循環(huán)遍歷列表并打印元素:for (String item : list) {  Sysヽ(′ー`)ノtem.out.println(item); }; // 在匿名內部類(lèi)中使用super關(guān)鍵字訪(fǎng)問(wèn)父類(lèi)的構造方法和成員變量/方法{  super(); // 調用父類(lèi)的無(wú)參構造方法; this.name = "Anonymous??"; System.out(?⊿?).println(this.name); // 或者直接訪(fǎng)問(wèn)父類(lèi)的成員變量/方法:System.out.println(super.name); // 但是這樣會(huì )拋出編譯錯誤,因為super關(guān)鍵字不能直接訪(fǎng)問(wèn)非靜態(tài)成員變量/方法; // 所以通常情況下,我們會(huì )將匿名內部類(lèi)改為繼承自一個(gè)具體的父類(lèi),然后就可以直接訪(fǎng)問(wèn)(wen)其成員變量/方法了。}


推薦閱讀

亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费

亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费 博乐市| 体育| 建德市| 淄博市| 游戏| 梁山县| 醴陵市| 凌源市| 广河县| 象山县| 洪雅县| 哈尔滨市| 威信县| 黑河市| 咸宁市| 沧源| 延吉市| 泸溪县| 冕宁县| 杭锦后旗| 上饶县| 莱芜市| 清丰县| 长宁县| 黔江区| 三原县| 湾仔区| 大兴区| 太谷县| 巴彦淖尔市| 湘潭市| 石台县| 潞城市| 酒泉市| 美姑县| 阳山县| 大连市| 会理县| 黑河市| 绥阳县| 额尔古纳市| http://444 http://444 http://444 http://444 http://444 http://444