En klass är det enda språkelementet i ActionScript 3.0 som kan implementera ett gränssnitt. Använd nyckelordet
implements
i en klassdeklaration för att implementera ett eller flera gränssnitt. I följande exempel definieras de två gränssnitten IAlpha och IBeta
,
samt klassen Alpha, som implementerar båda två:
interface IAlpha
{
function foo(str:String):String;
}
interface IBeta
{
function bar():void;
}
class Alpha implements IAlpha, IBeta
{
public function foo(param:String):String {}
public function bar():void {}
}
I en klass som implementerar ett gränssnitt måste följande göras av de implementerade metoderna:
-
Använda åtkomstkontrollsidentifieraren
public
.
-
Använda samma namn som gränssnittsmetoden.
-
Ha samma antal parametrar, var och en med datatyper som matchar gränssnittsmetodens parametrars datatyper.
-
Använda samma returtyp.
public function foo(param:String):String {}
Du kan vara ganska flexibel när det gäller namnet på parametrarna för de metoder du implementerar. Även om antalet parametrar och datatypen för varje parameter i den implementerade metoden måste matcha gränssnittsmetodens, behöver parameternamnet inte matcha. I föregående exempel har parametern för metoden
Alpha.foo()
fått namnet
param
:
Men parametern har namnet
str
i gränssnittsmetoden
IAlpha.foo()
:
function foo(str:String):String;
Du kan också vara flexibel när det gäller standardparametervärden. En gränssnittsdefinition kan innehålla funktionsdeklarationer med standardparametervärden. En metod som implementerar en sådan funktionsdeklaration måste ha ett standardparametervärde som är medlem av samma datatyp som värdet som angetts i gränssnittsdefinitionen, men det verkliga värdet behöver inte matcha. I följande kod definieras ett gränssnitt som innehåller en metod som har standardparametervärdet 3:
interface IGamma
{
function doSomething(param:int = 3):void;
}
Följande klassdefinition implementerar gränssnittet IGamma, men använder ett annat standardparametervärde:
class Gamma implements IGamma
{
public function doSomething(param:int = 4):void {}
}
Orsaken till detta är att reglerna för implementering av ett gränssnitt utformats speciellt för att säkra datatypskompatibiliteten, och det är inte nödvändigt att parameternamn och standardparametervärden är identiska för att detta mål ska uppnås.