【发布时间】:2012-12-19 20:34:56
【问题描述】:
我不确定我的标题是否正确,但我相信如果不正确我会得到纠正。
我正在尝试像这样重载 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(Dog d) 方法,即使动物是狗。 我使用这种方法是因为 Foo 类覆盖了 AnimalHelper 的 helpAnAnimal 方法。
我在这里错过了什么吗?我希望我不必检查 instanceof 然后强制转换它。 我相信这在 .Net 中是开箱即用的,但是记忆有点褪色并且可能不正确。
【问题讨论】:
-
在编译时,Java 将 Dog 视为动物(参见:stackoverflow.com/questions/1601365/…)。
-
我想你的问题已经在这里得到了回答stackoverflow.com/questions/11110631/…
标签: java dynamic polymorphism