Mic*_*eco -2 java methods abstract-class class
我有一个抽象类,Task有两个方法execute(),并finish()为如下:
abstract class Task {
abstract void execute();
private void finish() {
// Do something...
}
}
Run Code Online (Sandbox Code Playgroud)
如何确保隐式调用的execute()子类中的重载方法作为最后一条语句?Task finish()
str*_*sus 10
我不相信有任何“强制”子类来调用方法的方法,但是您可以尝试某种模板方法方法:
abstract class Foo {
protected abstract void bar(); // <--- Note protected so only visible to this and sub-classes
private void qux() {
// Do something...
}
// This is the `public` template API, you might want this to be final
public final void method() {
bar();
qux();
}
}
Run Code Online (Sandbox Code Playgroud)
公共method是入口点,先调用抽象bar,然后再调用私有qux方法,这意味着任何子类都遵循模板模式。但是,这当然不是万能的灵丹妙药-子阶级可以简单地无视公众method。