super的留意事項(xiàng):
1、super必需呈現(xiàn)在子類中(子類的辦法和結(jié)構(gòu)辦法中),而不是其他位置
2、super用于訪問父類的成員,例如父類的屬性、辦法、結(jié)構(gòu)辦法
3、訪問權(quán)限的限制,例如無法經(jīng)過super訪問父類的private成員。
super的運(yùn)用場(chǎng)景
1、子類中運(yùn)用了辦法重寫,但是又想調(diào)用父類的被重寫了的辦法,就要運(yùn)用super關(guān)鍵字
2、super在子類結(jié)構(gòu)函數(shù)中顯現(xiàn)調(diào)動(dòng)父類的無參結(jié)構(gòu)或者其他有參結(jié)構(gòu)(假如不顯現(xiàn)寫super,那么初始化子類實(shí)例時(shí)會(huì)默許調(diào)用父類的無參結(jié)構(gòu),假如此時(shí)父類沒有無參結(jié)構(gòu),編譯器會(huì)報(bào)錯(cuò))
super運(yùn)用辦法:
1、訪問父類的屬性或者對(duì)象,停止修正賦值操作=》super.變量/對(duì)象名;
2、直接訪問并調(diào)用父類的辦法=》super.辦法名();
3、顯式調(diào)用父類的結(jié)構(gòu)辦法,不論無參還是有參=》super()無參例子super(name)有參例子,假如子類不想調(diào)父類的無參結(jié)構(gòu),那么就必需要在子類的結(jié)構(gòu)辦法中顯式的運(yùn)用super調(diào)用父類的有參結(jié)構(gòu)?。。?img class="aligncenter wp-image-4824" src="https://zzzjtd.com/wp-content/uploads/2019/07/209.jpg" alt="java" width="398" height="201" />
父類:
復(fù)制代碼
publicclassA{
publicintage=11;
publicA()
{
System.out.println(“BuildA(無參結(jié)構(gòu))”);
}
publicA(Stringname)
{
System.out.println(name+”BuildA(有參結(jié)構(gòu))”);
}
publicvoidHello()
{
System.out.println(“Hello,我是A辦法里的Hello辦法”);
}
}
復(fù)制代碼
子類
復(fù)制代碼
publicclassBextendsA{
publicB()
{
System.out.println(“BuildB(無參結(jié)構(gòu))”);
}
publicB(Stringname)
{
System.out.println(name+”BuildB(有參結(jié)構(gòu))”);
}
publicvoidHello()
{
System.out.println(“父類的age值是:”+super.age);//輸出父類的成員變量
super.Hello();//顯式調(diào)用父類的辦法
System.out.println(“Hello,我是B辦法里的Hello辦法”);
}
}
復(fù)制代碼
復(fù)制代碼
publicclassCextendsA{
publicintage=99;
publicC(){
System.out.println(“BuildC(無參結(jié)構(gòu))”);
}
publicC(Stringname){
super(name);//顯式調(diào)用父類的有參結(jié)構(gòu),假如不寫這句的話,默許調(diào)用父類無參結(jié)構(gòu),也就是同等于super();
System.out.println(name+”BuildC(有參結(jié)構(gòu))”);
}
publicvoidHello()
{
System.out.println(“Hello,我是C辦法里的Hello辦法”);
}
}
復(fù)制代碼
測(cè)試:
復(fù)制代碼
publicclassTest{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
//子類實(shí)例化無參
//子類無參實(shí)例化,首先會(huì)默許調(diào)用父類的無參結(jié)構(gòu),再調(diào)用子類的無參結(jié)構(gòu)
//Bb1=newB();//輸出:【BuildA(無參結(jié)構(gòu))BuildB(無參結(jié)構(gòu))】
//子類實(shí)例化有參,子類有參結(jié)構(gòu)顯式調(diào)用父類的無參結(jié)構(gòu)(假如不顯式,默許還是調(diào)父類的無參結(jié)構(gòu))
//Bb2=newB(“豬”);//輸出:【BuildA(無參結(jié)構(gòu))豬BuildB(有參結(jié)構(gòu))】
//子類實(shí)例化有參,子類顯式的調(diào)用父類的有參結(jié)構(gòu)
//Cc1=newC(“驢”);//輸出:【驢BuildA(有參結(jié)構(gòu))驢BuildC(有參結(jié)構(gòu))】
//子類實(shí)例化,調(diào)用父類的辦法
/*
Bb3=newB();
b3.Hello();
//*/
/*輸出:
*BuildA(無參結(jié)構(gòu))
BuildB(無參結(jié)構(gòu))
父類的age值是:11
Hello,我是A辦法里的Hello辦法
Hello,我是B辦法里的Hello辦法
*/
//子類和父類有公共的成員變量
/*
Cc2=newC(“虎”);
System.out.println(“年齡:”+c2.age);//輸出99
Aa1=newC(“虎”);
System.out.println(“年齡:”+a1.age);//輸出11
//*/
//實(shí)例化子類,轉(zhuǎn)為父類對(duì)象,輸出的成員變量是父類的值,調(diào)用的辦法是字類重寫的辦法
Aa2=newC();
System.out.println(“年齡:”+a2.age);//輸出11
a2.Hello();//假如C有重寫辦法,就顯現(xiàn)C內(nèi)的辦法,假如沒重寫,就顯現(xiàn)A的辦法
}
}
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專線:400-001-5281
長(zhǎng)沙市天心區(qū)芙蓉中路三段398號(hào)新時(shí)空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專線/ 400-966-8830
旗下運(yùn)營(yíng)網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)