Java:无法覆盖传递子类的抽象方法

k88*_*074 3 java abstract-class subclass extend

我有一个抽象的课

public abstract class SuperclassA{
   public abstract void method(SuperclassB b);
}
Run Code Online (Sandbox Code Playgroud)

并实施

public class SubclassA extends SuperclassA{

   @override
   public void method(SubclassB b){
   }
}
Run Code Online (Sandbox Code Playgroud)

哪里SubclassB extends SuperclassB.

我的NetBeans编辑器抱怨说我没有压倒一切method.我能做些什么来实际传递一个子类method

Era*_*ran 5

为了覆盖基类的方法,子类的方法必须具有相同的签名.

如果您希望重写的方法只接受实例SubclassB,您可以测试它:

public class SubclassA extends SuperclassA
{
   @Override
   public void method(SuperclassB b){
       if (!(b instanceof SubclassB)) {
           // throw some exception
       }
       SubclassB sb = (SubclassB) b;
       ...
   }
}
Run Code Online (Sandbox Code Playgroud)

您可以按如下方式调用该方法:

SuperclassA a = new SubclassA ();
a.method (new SubclassB ());
Run Code Online (Sandbox Code Playgroud)