如果重写方法没有显式调用其 super 方法,我想抛出自定义异常。如果任何类扩展类A并重写say()方法,应该强制调用super.say()来执行基类方法中编写的代码,如果失败,我想抛出自定义异常,例如super而不是异常
class A {
public void say() {
System.out.println("From super");
}
}
class Demo extends A {
@Override
public void say() {
//Check if user have called super.say() or not if not throw a custom exception
super.say();
System.out.println("From Child");
}
public static void main(String[] args) {
Demo d = new Demo();
d.say();
}
}
最佳答案
这是 @DavidWallace 建议的方法,这比您想要的更好,因为它使得子类不可能阻止 say()
执行它在基类中执行的操作:
class A {
public final void say() {
System.out.println("From super");
saySomethingElse();
}
/**
* Subclasses can override this method to make the say() method
* say something else in addition to "From super".
*/
protected void saySomethingElse() {
}
}
class Demo extends A {
@Override
protected void saySomethingElse() {
System.out.println("From Child");
}
public static void main(String[] args) {
Demo d = new Demo();
d.say();
}
}
关于java - 强制重写类时调用基类版本方法,否则抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34702828/