我有一个名为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
}
}
答案 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;
}
}