2011-11-18 49 views
0

我正在AS3中工作。我們有一個抽象類,稱之爲MyAbstractClass(我不認爲它是真正抽象的,但我們只是擴展它)。擴展這個類的類也實現了一個接口,稱之爲IMyInterface。 IMyInterface有一個名爲updateView的函數。一般編程,抽象類調用方法它不「知道」 - AS3

我想在我的MyAbstractClass函數中的一個調用updateView,但當然MyAbstractClass沒有名爲updateView的函數,所以它不會編譯。我是否嘗試了一種糟糕的練習類型?有沒有簡單的方法來做我想要的?

我應該將updateView移動到MyAbstractClass,並且只是在需要的地方覆蓋它?謝謝

回答

2

是的,它絕對聽起來像這應該是一個抽象的方法在MyAbstractClass。如果所有的實現都實現IMyInterface,這聽起來像你應該聲明MyAbstractClass也聲明它。當然,這些都會要求你做出MyAbstractClass正確的摘要。

基本上,你需要問自己:在邏輯上,你應該能夠把MyAbstractClass的每個例子當作IMyInterface嗎?他們都應該有updateView?這對MyAbstractClass有意義嗎?還是它們在邏輯上是分開的?

+0

同意。尤其是在他將updateView()調用添加到他的抽象類後,抽象類應包含此方法。 – gthmb

+0

完成!謝謝。 – dt1000

0

從事物的聲音來看,包括抽象類在內的所有類都需要實現IMyInterface,所以它應該在層次結構的頂部。當然,那些擴展抽象類的類並不需要明確聲明它們實現了IMyInterface,但是在概念上他們是這樣做的。

0

當你想調用的接口方法的「抽象」類,你可以做到以下幾點:

它會工作,但它不是真的很漂亮或優雅。你應該重新考慮你的層次結構,就像你正在考慮的那樣。