2013-03-19 27 views
2

我知道包是類和接口的集合,用於組織和分類其內容。 我也知道類是對象的定義,以及它們的指令,它們的屬性/變量,以及它們的函數/方法。Actionscript中接口的主要功能是什麼?

不過,我還沒有明白的接口是什麼,還是真的是爲...

我已閱讀Adobe的網站這個定義是什麼..:

接口

使用

interface InterfaceName [extends InterfaceName ] {}

定義接口。接口是定義一組方法的數據類型;這些方法必須由實現該接口的任何類定義。

接口類似於類,有以下重要差異:

•接口僅包含方法的聲明,而不包含其實現。也就是說,每個實現接口的類都必須爲接口中聲明的每個方法提供一個實現。

Interface方法定義不能具有如publicprivate,但實現的方法必須被標記爲在一個實現該接口的類的定義public任何屬性。

•接口可以通過extends語句或通過implements語句的類繼承多個接口。

與ActionScript 2.0不同,ActionScript 3.0允許在接口定義中使用getter和setter方法。

......然而,這太模糊,是對我很有幫助。

有沒有人知道在ActionScript中的接口的目的和正確的實施和/或設計?

+3

接口被認爲是實現它們的類(一個或多個)的合同。通過使用接口,您正在使用稱爲Polymorphism的OOP基本原理之一。多態性不僅適用於ActionScript。如果你谷歌「AS3 IAnimal」的第一個鏈接是一個很好的解釋。 – 2013-03-19 21:17:49

+0

我的兩分錢:每當我想到我的接口插件想到的。如果您要爲現有應用程序編寫插件,則需要確保它符合現有應用程序方法的大綱。所以你的插件將不得不實現接口以正確地與應用程序行爲。這就像未來班級的模板。 – bigLarry 2013-03-20 12:26:44

回答

7

接口基本上讓你宣佈「這個類可以做這些事情。」

作爲一個真實世界的例子,您可能希望爲遊戲製作一個教程,該教程將逐個突出顯示屏幕上的每個不同控件。每個控制可能會閃爍或跳動突出自己,這樣你就可以說,他們實行「IHighlightable」界面,並且讓他們走其餘的工作:

public interface IHighlightable { 

    function highlight():void; 

} 

然後在您的控件:

public class Control implements IHighlightable { 

    public function highlight():void { 
     // Bounce and flash! 
    } 

} 

這意味着你可以做這樣的事情:

private function highlightControl(tutorialItem:IHighlightable):void { 

    tutorialItem.highlight(); 

} 

重要的是,你可以有一個類實現多個接口,這是類份額的能力時非常有用,但它不讓他們都擴展一個共同的基類是有意義的。

+0

感謝您的迷你課程,大衛!我想我現在對它更瞭解了。 – Kamari 2013-03-26 13:12:44

1

接口是合同一個。這是編譯時機制,迫使你到實現方法。在大OOP代碼庫,它是有其他類依賴於接口而不是其他類,這樣你就可以交換的實現不改變消費該接口的代碼的最佳實踐(這種優勢在實踐中discutable,因爲很多時候的界面也會改變)。

我相信接口從Java裏面介紹他們實現多態性ClassA可以IFoo類型和IBar在同一時間的),而從多個抽象類繼承(你只能繼承一個類,但可以借實現任意數量的接口)。

+0

我也喜歡它在AS3中,因爲它更容易爲接口提供模擬(使用像Mockolate的東西)。 – 2013-03-20 03:51:18