extends ステートメント

class className extends otherClassName {}
interface interfaceName extends otherInterfaceName {} 

他のクラス (スーパークラス) のサブクラスであるクラスを定義します。サブクラスは、スーパークラスで定義されているメソッド、プロパティ、関数などをすべて継承します。

インターフェイスは extends キーワードを使用して拡張することもできます。他のインターフェイスを拡張したインターフェイスには、元のインターフェイスのメソッド宣言がすべて含まれます。

対応バージョン : ActionScript 2.0、Flash Player 6

パラメータ

className:String - 定義するクラスの名前。

次の例の Car クラスは Vehicle クラスを拡張しているので、Vehicle クラスのすべてのメソッド、プロパティ、および関数を継承します。スクリプトで Car オブジェクトをインスタンス化すると、Car クラスのメソッドと Vehicle クラスのメソッドの両方を使用できます。

次の例では、Vehicle クラスを定義している Vehicle.as ファイルの内容を示します。

class Vehicle { 
 var numDoors:Number; 
 var color:String; 
 function Vehicle(param_numDoors:Number, param_color:String) { 
 this.numDoors = param_numDoors; 
 this.color = param_color; 
 } 
 function start():Void { 
 trace("[Vehicle] start"); 
 } 
 function stop():Void { 
 trace("[Vehicle] stop"); 
 } 
 function reverse():Void { 
 trace("[Vehicle] reverse"); 
 } 
}

次の例では、同じディレクトリ内にあるもう 1 つの AS ファイル Car.as の内容を示します。このクラスは Vehicle クラスを拡張したクラスで、次のような 3 つの変更を行っています。Car クラスでは、最初に、車オブジェクトにフルサイズのスペアタイヤが装着されているかどうかを追跡するための変数 fullSizeSpare を追加しています。2 番目に、車の盗難防止アラームをアクティブにする activateCarAlarm() を、車に固有の新しいメソッドとして追加します。3 番目に、Car クラスでは停車の際にアンチロックブレーキシステムを使用することを示すために、stop() 関数が上書きされています。

class Car extends Vehicle { 
 var fullSizeSpare:Boolean; 
 function Car(param_numDoors:Number, param_color:String, param_fullSizeSpare:Boolean) { 
 this.numDoors = param_numDoors; 
 this.color = param_color; 
 this.fullSizeSpare = param_fullSizeSpare; 
 } 
 function activateCarAlarm():Void { 
 trace("[Car] activateCarAlarm"); 
 } 
 function stop():Void { 
 trace("[Car] stop with anti-lock brakes"); 
 } 
}

次の例では、Car オブジェクトをインスタンス化し、Vehicle クラスに定義されているメソッド (start()) を呼び出します。次に、Car クラスによってオーバーライドされるメソッド (stop()) を呼び出し、最後に、Car クラスのメソッド (activateCarAlarm()) を呼び出します。

var myNewCar:Car = new Car(2, "Red", true); 
myNewCar.start(); // output: [Vehicle] start 
myNewCar.stop(); // output: [Car] stop with anti-lock brakes 
myNewCar.activateCarAlarm(); // output: [Car] activateCarAlarm

Vehicle クラスのサブクラスは、super キーワードを使用して記述することもできます。サブクラスは、このキーワードを使用することでスーパークラスのプロパティやメソッドにアクセスできます。次の例では、同じディレクトリ内にある 3 番目の AS ファイル Truck.as の内容を示します。Truck クラスでは、コンストラクタ内と、上書きされた reverse() 関数内で super キーワードを使用しています。

class Truck extends Vehicle {
 var numWheels:Number;
 function Truck(param_numDoors:Number, param_color:String, param_numWheels:Number) { 
 super(param_numDoors, param_color); 
 this.numWheels = param_numWheels; 
 } 
 function reverse():Void { 
 beep(); 
 super.reverse(); 
 } 
 function beep():Void { 
 trace("[Truck] make beeping sound"); 
 } 
}

次の例では、Truck オブジェクトをインスタンス化し、Truck クラスによってオーバーライドされるメソッド (reverse()) を呼び出してから、Vehicle クラスで定義されているメソッド (stop()) を呼び出します。

var myTruck:Truck = new Truck(2, "White", 18); 
myTruck.reverse(); // output: [Truck] make beeping sound [Vehicle] reverse 
myTruck.stop(); // output: [Vehicle] stop

関連項目

class ステートメント


 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00001321.html