是否有可能为子类中的方法定义一些默认行为,而不必调用super
?
例如:假设我们要在超类中设置一个boolean
值,而您想将其隐藏在子类中,是否有办法隐藏布尔值的修改?假设我们有以下基类BaseTest
public class BaseTest {
private boolean mIsInitialized = false;
public BaseTest() {
}
public void initialize() {
mIsInitialized = true;
}
}
及其子类
Test
:public class Test extends BaseTest {
public Test() {
}
public void initialize() {
}
}
我希望调用
Test.initialize()
将mIsInitialized
值设置为true
,而不必调用super.initialize()
。我同样想避免在超类中定义抽象函数。这有可能吗?
最佳答案
@rgettman等。要求使用Template pattern。在其中,您明确表明了一个事实,即子类可以通过不是initialize
的特定可覆盖方法“挂接”超类的操作,这似乎与您的问题的实质背道而驰。
您还可以使用诸如AspectJ之类的面向方面的框架将各种不可见的行为附加到方法调用上。