新聞中心
Java中的super關鍵字是一個非常重要的關鍵字,它的主要作用是用來調(diào)用父類的構(gòu)造方法、成員變量和成員方法,在Java中,super關鍵字主要用于以下幾個方面:

創(chuàng)新互聯(lián)建站服務項目包括華州網(wǎng)站建設、華州網(wǎng)站制作、華州網(wǎng)頁制作以及華州網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,華州網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到華州省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
1、調(diào)用父類的構(gòu)造方法
當子類創(chuàng)建對象時,如果沒有顯式地調(diào)用父類的構(gòu)造方法,那么父類的無參構(gòu)造方法會被自動調(diào)用,如果需要在子類的構(gòu)造方法中調(diào)用父類的有參構(gòu)造方法,可以使用super關鍵字。
class Parent {
public Parent() {
System.out.println("Parent constructor");
}
}
class Child extends Parent {
public Child() {
super(); // 調(diào)用父類的無參構(gòu)造方法
System.out.println("Child constructor");
}
}
2、訪問父類的成員變量和成員方法
在子類中,可以使用super關鍵字來訪問父類的成員變量和成員方法。
class Parent {
private String name = "Parent";
public String getName() {
return name;
}
}
class Child extends Parent {
private String name = "Child";
public void setName(String name) {
super.setName(name); // 調(diào)用父類的setName方法
this.name = name;
}
}
3、實現(xiàn)多重繼承時的菱形問題解決
在Java中,如果一個類繼承了兩個或多個父類,那么可能會出現(xiàn)菱形問題,即一個子類繼承了A父類和B父類,而B父類又繼承了C父類,這時如果在子類中使用super關鍵字調(diào)用C父類的方法,就會拋出編譯錯誤,為了解決這個問題,可以使用super關鍵字來調(diào)用所有父類的相同方法。
class A {}
class B extends A {}
class C extends B {}
class D extends C {}
class E extends D {}
在E類中,可以使用super關鍵字調(diào)用所有父類的getName方法:
class E extends D {
public void getName() {
System.out.println("E getName"); // 調(diào)用D的getName方法(通過super關鍵字)
System.out.println("E getName (by self)"); // 直接調(diào)用自己的getName方法(會拋出編譯錯誤)
}
}
4、在匿名內(nèi)部類和Lambda表達式中使用super關鍵字
在Java中,還可以在匿名內(nèi)部類和Lambda表達式中使用super關鍵字。
Listlist = new ArrayList<>(); list.add("Hello"); list.add("World"); list.forEach(item -> System.out.println(item)); // 在Lambda表達式中使用super關鍵字(實際上并沒有用到){} -> {} 是多余的,可以省略掉,正確的寫法是:list.forEach(System.out::println); // 或者使用增強型for循環(huán)遍歷列表并打印元素:for (String item : list) { System.out.println(item); }; // 在匿名內(nèi)部類中使用super關鍵字訪問父類的構(gòu)造方法和成員變量/方法{ super(); // 調(diào)用父類的無參構(gòu)造方法; this.name = "Anonymous"; System.out.println(this.name); // 或者直接訪問父類的成員變量/方法:System.out.println(super.name); // 但是這樣會拋出編譯錯誤,因為super關鍵字不能直接訪問非靜態(tài)成員變量/方法; // 所以通常情況下,我們會將匿名內(nèi)部類改為繼承自一個具體的父類,然后就可以直接訪問其成員變量/方法了。}
分享題目:java中super關鍵字有什么用
網(wǎng)站鏈接:http://m.fisionsoft.com.cn/article/coeepso.html


咨詢
建站咨詢
