我目前正在開發一個項目,其中有大量的繼承自其他類的類繼承其他類等。它可能比應該更復雜,但我是抽象的抽象者。是否可以在ActionScript 3中更改繼承的訪問修飾符?
無論如何,有時我需要改變一個getter/setter從公開到私人。我想這不是真的需要,而是希望切斷子類中預設的事情,但仍然需要在父類中公開訪問。
因此,一個例子是:
Class Base {
public function set label(value:String):void{};
}
Class A extends Base {}
Class B extends A {
public function B() {
super();
this.label = "stuff";
}
override public function set label(value:String):void {
//this setter should not be publicly available since the label should not be possible to change in this class
}
}
目前,我做在這種情況下兩種情況之一:
- 覆蓋二傳手什麼也不做,或將其設置爲默認值,它仍然可以更新/渲染/任何
- 拋出一個錯誤,說它在該類中不可用
我已經做了一些搜索,一切都似乎指向這是不可能的,但我從來沒有發現它明確表示,這是不可能的。那麼是否可以在繼承的屬性/函數上更改訪問修飾符?
似乎是一個設計問題。如果我使用的是從以前使用過的另一個類繼承的類,那麼我希望基類中的所有信息仍然可以通過擴展它的類來訪問。如果所有突然出現的信息都不存在,我會有點困惑;如果這些信息仍被列爲集體成員,但我沒有回報我的預期,我會感到特別困惑。 – Marty 2013-02-18 02:59:24
@MartyWallace這是非常真實的。這肯定是我的設計中的一個問題,我正在解決這個問題(由於不到一個月的時間來完成2-3個月的工作並削減一些角落),但我仍然好奇這是否可行。 – 2013-02-18 03:03:39
不幸的是,這絕對是不可能的。我搜索了一段時間嘗試和類似的東西像內部設置和公共getter但沒有運氣。 – Marty 2013-02-18 03:06:24