Flash CS3 ドキュメンテーション |
|||
| ActionScript 2.0 の学習 > 継承 > Flash でのサブクラスの作成について > メソッドとプロパティのオーバーライド | |||
サブクラスがスーパークラスを拡張する場合、サブクラスはスーパークラスのすべてのメソッドとプロパティを継承します。クラスを使用し、既存のクラスを拡張することの利点の 1 つとして、既存のクラスに新しい機能を提供できるだけでなく、既存の機能を変更することもできます。たとえば、例 : Widget クラスの拡張で作成した Widget クラスについて考えます。スーパークラス (Widget) で新しいメソッドを作成し、そのメソッドをサブクラス (SubWidget) でオーバーライドすることも、Widget クラスから継承したメソッドをそのまま使用することもできます。次の例では、クラス内の既存のメソッドをオーバーライドする方法を示します。
メモ : 前の例で Widget クラスを作成した場合は、次のように doSomething() メソッドを追加することによって既存のメソッドを変更します。
class Widget {
public static var widgetCount:Number = 0;
public function Widget() {
Widget.widgetCount++;
}
public function doSomething():Void {
trace("Widget::doSomething()");
}
}
Widget クラスは、コンストラクタと doSomething() というパブリックメソッドを定義するようになりました。
|
メモ |
|
例 : Widget クラスの拡張で SubWidget クラスを作成した場合は、代わりにこのファイルを使用できます。 |
class SubWidget extends Widget {
public function SubWidget() {
trace("Creating subwidget # " + Widget.widgetCount);
doSomething();
}
}
SubWidget クラスのコンストラクタは、スーパークラスで定義した doSomething() メソッドを呼び出します。
var sw1:SubWidget = new SubWidget(); var sw2:SubWidget = new SubWidget();
Creating subwidget # 1 Widget::doSomething() Creating subwidget # 2 Widget::doSomething()
この出力は、SubWidget クラスのコンストラクタがスーパークラス (Widget) のコンストラクタを呼び出し、これにより静的 widgetCount プロパティがインクリメントされたことを示しています。SubWidget のコンストラクタは、スーパークラスの静的プロパティをトレースし、スーパークラスから継承する doSomething() メソッドを呼び出します。
doSomething() という新しいメソッドを追加します。次のコードと一致するようにクラスを変更します (ボールド体のコードを追加します)。
class SubWidget extends Widget {
public function SubWidget() {
trace("Creating subwidget # " + Widget.widgetCount);
doSomething();
}
public function doSomething():Void {
trace("SubWidget::doSomething()");
}
}
Creating subwidget # 1 SubWidget::doSomething() Creating subwidget # 2 SubWidget::doSomething()
前の出力は、SubWidget クラスのコンストラクタ内の doSomething() メソッドが、スーパークラスではなく現在のクラス内の doSomething() メソッドを呼び出していることを示しています。
SubWidget クラスをもう一度開き、スーパークラスの doSomething() メソッドを呼び出すように SubWidget クラスのコンストラクタを変更します (ボールド体のコードを追加します)。
public function SubWidget() {
trace("Creating subwidget # " + Widget.widgetCount);
super.doSomething();
}
前に説明したように、super キーワードを追加して、現在のクラスの doSomething() メソッドの代わりにスーパークラスの doSomething() メソッドを呼び出すことができます。super の詳細については、『ActionScript 2.0 リファレンスガイド』の「super」の項目を参照してください。
[出力] パネルに、Widget クラスの doSomething() メソッドの内容が表示されます。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000824.html