在Java中...
我正在创建一个包含方法doAction()的Foo类。我的要求:
抽象将起作用,除了它不允许我为doAction()指定函数体。
最佳答案
编辑
故事的结尾不可能同时满足所有要求。您必须至少放弃一个条件,并可能考虑采用完全不同的方法来解决您要解决的问题。
使用两种单独的方法。要么:
abstract class Foo {
// Override this method
abstract void doActionInSubclass();
// You can't override a final method
// And you don't want subclases to override this one
final void doAction () {
// do whatever default-y things you want here
doActionInSubclass();
}
}
或者只是使“required”方法与您要强制子类重写的方法完全分开:abstract class Foo {
abstract void mustOverrideThisInConcreteSubclasses();
final void doAction() {
// default-y things here
}
}