2012-06-05 33 views
0

實際上出現了這個問題。以此實例模型視圖。我有2個對象。模擬對象和渲染對象。引用超類(鍵入語言)的首選方式

類ObjectRSim(對象,指定爲渲染辛)是這樣的:

class ObjectRSsim { 
    var simObject:ObjectSim; 
} 

ObjectRSim,使用ObjectSim的屬性/無效。

有繼承的對象ObjectRSim和ObjectSim:

PosObjectRSim和PosObjectSim(位置的對象..)

class PosObjectRSim extends ObjectRSim { 
    var posSimObject:PosObjectSim; 
} 

或...

class ObjectRSim { 
    var simObject:Dynamic; //Dynamic is untyped Type from haxe, the compiler does not check calls to a Dynamic object. 
} 

我應該有一個參考每個類型都在ObjectRSim層次結構類的ObjectSim的繼承層次結構中,還是應該使用simObject:Dynamic?

+1

爲什麼'Java'標籤? –

+0

因爲java和C++是最常用的具有參數化的類型語言,並且這適用於使用它們編寫的應用程序。 – MetaChrome

+0

但是這種語法在Java或C++中不起作用,並且它們已經有了用於引用基類的自己的語法。 – EJP

回答

1

在這種情況下使用Dynamic將是完全錯誤的。它通常很慢(對於除JavaScript以外的每個haxe目標),而不是內聯,通常只用於與底層平臺交互或使用序列化(YAML,JSON等)。

談到解決問題...

如果沒有成千上萬的這個對象的計劃,我可能只是低級別的類對象的另一個領域。這不是從面向對象的角度來看最清晰的方式,但它經常爲我提供更簡單,更清晰的代碼。

鑄造是另一種選擇(我個人不喜歡)。

參數化可能是處理這個問題的最佳方法,但我不確定我們是否已經在haxe中使用了類型限制參數化。

+0

是的,我們目前肯定有類型限制參數化。 – stroncium

0

參數化依賴類和依賴項成員。

相關問題