的方法在Java中,我有父母class P
和孩子class C.
类型检查的子类
在抽象类,我有一个方法void blah(P parent)
。在抽象类的子类中,它不通过void blah(C child)
进行编译。
如何在子类中实现类型检查?
的方法在Java中,我有父母class P
和孩子class C.
类型检查的子类
在抽象类,我有一个方法void blah(P parent)
。在抽象类的子类中,它不通过void blah(C child)
进行编译。
如何在子类中实现类型检查?
void blah(P parent)
和void blah(C child)
实际上是不同的方法。这就是为什么你不能使用C子类来重写一个抽象的P父类方法。
所以,在你的子类的抽象类,您可以
void blah(P parent){
if(parent instanceof C){
...
}else if(parent instanceof C2){
}
}
或者只是分别实现这两个方法。
我建议你使用父类型参数而不是子参数。如果你使用它,你可以通过任何实现或抽象类,它会让你的代码可重用。
在你的情况下,你有两种不同的方法,这是不是重写的方法。
+1。我认为这在泛型中可能部分可行,但可能不是一个真正令人满意的方式。毕竟,它有点违背了利斯科夫的替代原则。等待已经尝试过的人的好回答。 – Thilo 2012-01-30 03:47:39