我有一个名为 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/