可能重複:
Java Overload method with inherited interface如何強制Java的動態方法調用結合
我還不能肯定我的標題是正確的,但我敢肯定,我會,如果被糾正不是。
我試圖重載helpIt方法,像這樣:
class Animal{}
class Dog extends Animal{}
class Foo implements AnimalHelper
{
@Override
public void helpAnAnimal(Animal a)
{
helpIt(a);
}
private void helpIt(Dog d)
{}
private void helpIt(Animal a)
{}
}
問題是這樣從來沒有調用helpIt(狗d)方法,即使在動物是狗。 我使用這種方法是因爲類Foo覆蓋了AnimalHelper的helpAnAnimal方法。
我在這裏錯過了什麼嗎?我希望我不必檢查instanceof然後施放它。 我相信這在.Net的框中很有用,但內存有點褪色,可能不正確。
在編譯時,Java將Dog視爲動物(請參閱:http://stackoverflow.com/questions/1601365/java-overload-method-with-inherited-interface)。 – sdasdadas
我認爲你的問題已經在這裏得到解答 http://stackoverflow.com/questions/11110631/java-overloading-and-inheritance-rules – MatthiasLaug