動態綁定 在子類和父類里面有同名函數的時候,假如生成一個子類的對象,并在子類的對象里面 調用這個函數,那么到底會是調用的是誰的函數呢?例如 class Base{ int i=47; int f(){ return g(); } int g(){ return i; } } class Dervied extends Base{ int i=27; int g(){ file://override父類里面的方法
return i;
}
} public class test { public static void main (String[] args) { Derived d = new Derived(); //生成Derived的對象 System.out.PRintln(d.f()); // d.f() === Derived.f(d); } } d.f()等價于==對象d調用父類的f()函數,f()函數就會調用return g()這句話,這個時候是在調用誰的g()呢? 這個時候需要動態綁定 Binding,所謂的動態綁定,通俗的就是指,對象在調用方法的時候能夠自己判定改調用誰的方法 是自己的方法還是父類的方法, 到底怎樣判定呢?我覺得不是很好的理解所以干脆也來個通俗的解釋: 即 就是調用當前對象的所在類的里面的方法: 假如從當前子類Dervied生成了對象d, 那么以后只要是是調用g()的時候,都會是調用子類Derived里面的g()函數 而不會去調用 父類Base里面的g()函數