2015-09-08 75 views
1

重載是有可能有執行方法在不同的班級超載。方法在不同的班級

class Parent{ 
    // Private method 
    private void method1(){ 
     System.out.println("In private method of Parent class"); 
    } 
    void method2(){ 
    } 
    void method3(){ 
    } 
} 

class Child extends Parent{ 
    void method3(int i){ 
    } 
} 

要執行超載就必須有兩個同名的方法,並在課堂上不同的簽名。但在繼承中它是如何工作的。 在繼承中,是否真的在子類中創建了非私有方法的副本? 在這個例子中,重載是否被執行?

+0

不,方法重載,你必須有相同的方法簽名。 – drgPP

+2

不,重載發生在同一個班級內。 @drgPP你正在談論重寫 –

+0

@LaurentiuL。哦,是的,你說得對,我對這些條款感到困惑。 – drgPP

回答

3

Overloading意味着名稱相同但簽名不同的方法,但對於特別class不會覆蓋等同。它是課程的主題,與其父母孩子無關。此外,如果父項方法比子方法重載可能會或可能不會有相同的行爲。此外,如果任何interface包含重載簽名,則類最終會有重載方法。

請注意,您沒有重載method3(int i)method()父母,甚至更多的方法Child與您的情況下,它的父母的方法無關。你只能覆蓋父的non-privatenon-static方法,但你不能超載他們,沒有超載他們意義。

0

重寫 - 重新定義方法在子類與出干擾簽名。這也稱爲動態綁定,它將在運行時根據傳遞的對象來決定。

重載 - 通過改變方法簽名重新定義方法與同一類。這也被稱爲靜態綁定,它將在編譯時決定。

這裏,您具體的例子,我們不應該說的方法3()超載,因爲我們並沒有重新定義方法3()以上的時間在同一個班級。