??????? 對于重載方法(overloaded method)的選擇是靜態的,而對于被改寫的(overwritten method)方法的選擇是動態的。------摘自《effective java》
???????? 這個該怎么來理解呢?其實就是說當出現繼承關系時,到底是調用被改寫的方法還是調用沒有被改寫的方法,是動態的決定的。是父類對象就調用父類方法,是子類對象就調用子類方法。而不管編譯時的類型。如A的子類有B、C,A[ ] test = new A[ ]{ new A(),new B(),new C()},那么在以后通過test[i]來訪問每個對象,則test[2]調用的是C對象改寫的方法。對于重載方法來說,如果編譯時類型就已經確定,在運行時雖然類型不同,但是不影響重載方法的選擇。See 《Effective java》P109。?
???????? 這個該怎么來理解呢?其實就是說當出現繼承關系時,到底是調用被改寫的方法還是調用沒有被改寫的方法,是動態的決定的。是父類對象就調用父類方法,是子類對象就調用子類方法。而不管編譯時的類型。如A的子類有B、C,A[ ] test = new A[ ]{ new A(),new B(),new C()},那么在以后通過test[i]來訪問每個對象,則test[2]調用的是C對象改寫的方法。對于重載方法來說,如果編譯時類型就已經確定,在運行時雖然類型不同,但是不影響重載方法的選擇。See 《Effective java》P109。?