Java:如何强制给定的受保护方法被子类重载?

mor*_*ors 10 java overloading parent-child

父类不是也不能抽象.过载的方法受到保护,因此不能在那里使用接口.

考虑到这两个限制是否可以实现?

Mac*_*Mac 8

你不能强制重写方法 - 这就是抽象方法的用途(你说的不是一个选项).

一种可能性是使基类中的方法抛出一个UnsupportedOperationException.然后,子类必须覆盖它以防止抛出错误.这样,您至少可以检测方法是否已被覆盖.

例如:

public class Father {
    public void method ( ) {
        throw new UnsupportedOperationException( );
    }
}

public class Child1 extends Father {

}
public class Child2 extends Father {
    public void method ( ) {
        // Do something useful here...
    }
}
Run Code Online (Sandbox Code Playgroud)

呼叫Child1.method()将抛出UnsupportedOperationException,表明它没有覆盖Fathermethod().调用Child2.method()不会抛出异常,这意味着它被覆盖method().


Tod*_*ray 3

您可以从父级抛出 UnsupportedOperationException。这在编译时没有帮助,但在运行时会有帮助。