如何强制子类在重写方法中提供特定数据

时间:2017-12-01 14:24:33

标签: java oop

我有一个名为Feature的基类,另有两个类Feature1,它是基类的扩展。 换句话说,Feature1扩展Feature,如代码所示。

我想要做的是,由于Feature1扩展了基础Feature类,它应该覆盖capture()方法,但我想要做的也是, 强制Feature1也在captureId方法中提供名为capture()的变量。这意味着我想强制每个功能扩展Feature类必须在被覆盖的captureId方法中提供capture()

class Feature {
   ...
   public void capture() {

   }
}

class Feature1 extends Feature {
    ...
    @Override
    public void capture() {
        //captureId must be mandatory to be provided by each class extends Feature
    }
}

1 个答案:

答案 0 :(得分:2)

您的意思是说您希望capture()返回捕获ID吗?如果是这样,那么您可以要求capture()返回一个数字,并将其保留为抽象,以便子类必须覆盖它:

public class Feature
{
    public abstract int capture();
}

您是否只想确保Capture ID出现问题?另一种方法是使用您想要的行为编写基本方法,然后在其中调用抽象方法。例如:

public class Feature
{
    protected abstract int doSomethingWithCaptureId(int input);

    public void capture() {
        int captureId = this.doSomethingWithCaptureId(this.inputId);
        doSomeOtherTask();
    }
}

public class Feature1
{
    @Override
    protected int doSomethingWithCaptureId(int input) {
        // put your logic here
        return 1;
    }
}