fra*_*lic 4 java oop inheritance overriding
在Java ...
我正在创建一个包含方法doAction()的类Foo.我的要求:
abstract会工作,除了它不允许我为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();
}
}
Run Code Online (Sandbox Code Playgroud)
或者只是将"required"方法与要强制子类覆盖的方法完全分开:
abstract class Foo {
abstract void mustOverrideThisInConcreteSubclasses();
final void doAction() {
// default-y things here
}
}
Run Code Online (Sandbox Code Playgroud)