是否有可能为子类中的方法定义一些默认行为,而不必调用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之类的面向方面的框架将各种不可见的行为附加到方法调用上。

10-08 08:20
查看更多