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

标签 java oop

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

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

代码:

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
    }
}

最佳答案

您的意思是说您希望 capture() 返回 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;
    }
}

关于java - 如何强制子类在重写方法中提供特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47595464/

相关文章:

java - 用于验证周和年的正则表达式

java - 如果json属性名称和java对象属性不同,如何将json字符串转换为java对象

c# - 将参数中的字段传递给外部方法调用是否违反了开放/封闭原则?

java - 为什么声明相似的对象名和HashMap没有冲突?

c# - 使两个并行继承结构跨层交互的方法

java - 错误: <identifier> expected nm ="Sam";

java - SQLException:找不到适用于 jdbc:derby 的驱动程序:错误

java - ClassNotFoundException 与 NoClassDefFoundError 与无法找到或加载主类 XYZ 之间的区别是什么?

delphi - 简单的 OODesign 问题 : how to query data from multiple objects?

python - OOP 代码中导入库的正确位置在哪里