1挡爵、域隱藏
當(dāng)子類繼續(xù)父類時竖般,出現(xiàn)相同字段時父類字段不會將子類字段覆蓋,而只是將其“隱藏”茶鹃。
例子:
父類:
public class Super {
public int field=0;
public int getField() {
return field;
}
}
子類:
public class Sub extends Super {
public int field=1;
public int getField() {
return field;
}
public int getSuperField(){
return super.field;
}
}
測試:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Super sup=new Sub();
System.out.print(sup.field+" "+sup.getField());//對于域的訪問由編譯器決定(靜態(tài)綁定)
}
}
結(jié)果:0 1
結(jié)論:從結(jié)果可以知道捻激,子類field字段并沒有將父類的field字段覆蓋,而只是“隱藏”而已前计;另外也可以知道對于域(字段)的訪問是由編譯器決定的胞谭,即靜態(tài)綁定。
2男杈、靜態(tài)方法隱藏
例子:
父類:
public class Father {
public static void display(){
System.out.println("father");
}
}
子類:
public class Son extends Father{
public static void display(){
System.out.println("son");
}
}
測試:
public static void main(String[] args) {
Father f=new Son();
Son s=new Son();
s.display();
f.display();
}
結(jié)果:
son
father
結(jié)論:對于靜態(tài)方法丈屹,子類中的靜態(tài)方法也不會覆蓋父類中的靜態(tài)方法,而只是“隱藏”而已伶棒,具體調(diào)用哪個方法取決于對象引用類型旺垒;對于普通方法則是覆蓋。
3肤无、靜態(tài)綁定與動態(tài)綁定
靜態(tài)綁定是指在程序運行前方法已經(jīng)由編譯器綁定先蒋;由final,static宛渐,private的方法竞漾、構(gòu)造方法以及字段是前期綁定(靜態(tài)綁定)
動態(tài)綁定是指在程序運行過程中動態(tài)綁定需要被執(zhí)行的方法。除上述方法以外的方法均屬于動態(tài)綁定窥翩。
原文:https://blog.csdn.net/LClansefengbao/article/details/32161991