更新時(shí)間:2020-07-22 15:42:50 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3376次
class?Base{
????int?x?=?1;
????static?int?y?=?2;
????String?name(){
????????return?"mother";
????}
????static?String?staticname(){
????????return?"static?mother";
????}
}
class?Subclass?extends?Base{
????int?x?=?4;
????int?y?=?5;
????String?name(){
????????return?"baby";
????}
????static?String?staticname(){
????????return?"static?baby";
????}
}
public?class?Test02{
????public?static?void?main(String[]?args){
????????Subclass?s?=?new?Subclass();
????????System.out.println(s.x+"?"+s.y+"?"+s.name()+"?"+s.staticname());
????????Base?s1?=?s;
????????System.out.println(s1.x+"?"+s1.y+"?"+s1.name()+"?"+s1.staticname());
???}
}?
/*
結(jié)果:
4 5 baby static baby
1 2 baby static mother
結(jié)論:
父類的實(shí)例方法被子類的同名實(shí)例方法覆蓋
父類的靜態(tài)方法被子類的同名靜態(tài)方法隱藏
父類的實(shí)例變量和類變量可以被子類的實(shí)例變量和類變量隱藏
就"Base s1=s"來(lái)說(shuō):把s賦值給s1時(shí),s(子類)的方法name已經(jīng)把父類的name方法覆蓋了,卻沒(méi)有覆蓋static name,而是隱藏了它。
賦值給s1后,s1的name方法已經(jīng)變成了"baby",而staticname方法只是被隱藏而沒(méi)有被覆蓋,現(xiàn)在有還原成了"static mother"
*/
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java子類與父類方法的隱藏和覆蓋”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)