クラスは、インターフェイスを実装できる唯一の ActionScript 3.0 言語エレメントです。 クラス宣言内で
implements
キーワードを使用して、1 つまたは複数のインターフェイスを実装します。次の例では、IAlpha および IBeta の 2 つのインターフェイスと
、
これらの両方を実装する Alpha クラスを定義します。
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 {}
}
インターフェイスを実装するクラスでは、実装されたメソッドは以下を行う必要があります。
実装するメソッドのパラメーターには、ある程度自由に名前を付けることができます。 実装されるメソッドとインターフェイスメソッドのパラメーター数および各パラメーターのデータ型は一致する必要がありますが、パラメーター名を一致させる必要はありません。 例えば、前の例では
Alpha.foo()
メソッドのパラメーターの名前は
param
ですが、
IAlpha.foo()
インターフェイスメソッドでのパラメーターの名前は
str
です。
function foo(str:String):String;
デフォルトのパラメーター値には若干の柔軟性があります。 インターフェイス定義は、デフォルトのパラメーター値を備えた関数宣言を含むことができます。 このような関数宣言を実装するメソッドは、インターフェイス定義に指定されている値と同じデータ型のメンバーであるデフォルトのパラメーター値を持つ必要がありますが、実際の値が一致する必要はありません。 例えば、次のコードは、デフォルトのパラメーター値 3 を持つメソッドを含むインターフェイスを定義します。
interface IGamma
{
function doSomething(param:int = 3):void;
}
次のクラス定義は、Igamma インターフェイスを実装しますが、異なるデフォルトパラメーター値を使用します。
class Gamma implements IGamma
{
public function doSomething(param:int = 4):void {}
}
この柔軟性は、インターフェイスを実装する規則がデータ型の互換性を確保するように特別に設計されているからです。このために、同じパラメーター名およびデフォルトのパラメーター値を要求する必要はありません。