我String foo()
在抽象类中有一个方法,它已经进行了一些预计算,但无法提供该方法应该返回的最终结果.所以我想要的是,从我的抽象类继承的每个非抽象类必须以foo
第一个super()
被调用的方式实现,然后计算结果.有没有办法在java中强制执行此操作?
有没有办法强制使用@Override 注释?
只是为了澄清,我不是在问“我如何强制子类实现一个方法”(像这样):
public abstract class BaseClass {
public abstract void foo();
}
Run Code Online (Sandbox Code Playgroud)
我专门询问这种情况:
public class AnnotatedSubclass extends BaseClass {
@Override
public void foo() {
System.out.println("I have @Override.");
}
}
public class NonAnnotatedSubclass extends BaseClass {
public void foo() {
System.out.println("I do not have @Override.");
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,即使NonAnnotatedSubclass
没有明确的@Override
注释,两者都可以编译。有没有办法让编译器在这种情况下抛出错误/警告NonAnnotatedSubclass
?
我问,因为有时当我扩展类时,我不小心覆盖了父方法,因为它们的名称与我要创建的名称相似(如.paint()
在 Swing 中)。