2009-07-23 84 views
5

在Actionscript 3中,我無法在Interfaces中聲明變量。 我不明白。 我知道我可以通過定義getter和setter來解決這個問題,但是如果我只想要一個簡單的公共屬性呢?如果我設置或獲取屬性時,我通常會使用getter和setter,但如果我只想存儲一個值,該怎麼辦?爲什麼屬性不能在接口中聲明

回答

0

我不是一個actioscript編程,但接口(例如在java中)是爲了定義行爲而不是狀態,所以jave中的intrerfaces只是聲明實現接口的類需要定義的方法。屬性(或實例變量)通常不需要定義行爲,並且在接口中不允許使用。

+0

屬性是不一樣的實例變量。 – 2009-07-23 21:03:07

+1

+1 ......原則上...因爲這對於AS3來說並不是真的有效...屬性(由訪問者提供)和變量之間存在區別......從外部來看,這是完全透明的,是IDENTICAL在語法層面......但有效的屬性訪問意味着一個調用和變量訪問不......接口可以聲明屬性訪問器,但不是變量......這不是100%一致或不合理......但這就是生活,我猜... :) – back2dos 2009-07-23 21:05:44

2

你可以這樣說:接口存在,因爲在你的語言中,你不能從多個抽象基類繼承。如果AS3允許你這樣做,它可能不會有'接口',而是'純粹的抽象類'。

換句話說,在界面中有屬性實現會導致名稱衝突,並從那裏導致其他多重繼承問題(菱形)。

但是,只有一個getter或setter沒有實現應該工作。

public interface I { function get A():int; } 

(我沒有手頭的AS3編譯器)

相關問題