儿童班的方法的类型检查

时间:2012-01-30 03:38:13

标签: java

在Java中,我有父class P和孩子class C.

抽象类中,我有一个方法void blah(P parent)。在抽象类的子类中,它不能通过void blah(C child)进行编译。

如何在子类中实现类型检查?

2 个答案:

答案 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)

我建议您使用父类型参数而不是使用子参数。如果您使用它,您可以传递任何实现或抽象类,它将使您的代码可重用。

在您的情况下,您有两种不同的方法,而不是重写方法。