更新時間:2020-07-22 15:42:50 來源:動力節(jié)點 瀏覽2943次
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é)論:
父類的實例方法被子類的同名實例方法覆蓋
父類的靜態(tài)方法被子類的同名靜態(tài)方法隱藏
父類的實例變量和類變量可以被子類的實例變量和類變量隱藏
就"Base s1=s"來說:把s賦值給s1時,s(子類)的方法name已經(jīng)把父類的name方法覆蓋了,卻沒有覆蓋static name,而是隱藏了它。
賦值給s1后,s1的name方法已經(jīng)變成了"baby",而staticname方法只是被隱藏而沒有被覆蓋,現(xiàn)在有還原成了"static mother"
*/
以上就是動力節(jié)點java培訓(xùn)機構(gòu)的小編針對“Java子類與父類方法的隱藏和覆蓋”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743