在Java中,我有父class P
和孩子class C.
在抽象类中,我有一个方法void blah(P parent)
。在抽象类的子类中,它不能通过void blah(C child)
进行编译。
如何在子类中实现类型检查?
答案 0 :(得分:4)
void blah(P parent)
和void blah(C child)
实际上是不同的方法。这就是为什么你不能使用C Child来覆盖抽象的P父方法。
因此,在抽象类的子类中,您可以
void blah(P parent){
if(parent instanceof C){
...
}else if(parent instanceof C2){
}
}
或者分别实施这两种方法。
答案 1 :(得分:1)
我建议您使用父类型参数而不是使用子参数。如果您使用它,您可以传递任何实现或抽象类,它将使您的代码可重用。
在您的情况下,您有两种不同的方法,而不是重写方法。