是否有可能爲子類中的方法定義一些默認行爲,而無需致電super
?假設我們想要在超類中設置一個boolean
的值,並且你想從子類中隱藏這個值,有沒有辦法隱藏修改的布爾值?假設我們有以下的基類BaseTest
不使用super的子類方法的默認行爲是什麼?
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()
。我同樣希望避免在超類中定義一個抽象函數。 這甚至可能嗎?
這似乎是確切的場景你想使用方法的超級版本,因爲這是你將如何設置這樣的「默認」。你爲什麼如此反對呢? –
對於你目前的限制,不,這是不可能的。 –
您可以聲明方法'final',這樣基礎實現是唯一的實現(不能被覆蓋)。這不是你要求的,但可能會幫助你實現你的解決方案 – Cascader