Essential ActionScript3.0 読書メモ 第44回 インスタンスメソッドのオーバーライド

ここまで、継承について、再利用(サブクラスがスーパークラスのメソッド及び変数を利用すること)及び拡張(サブクラスが独自のメソッド及び変数を定義すること)を学んだ。

次に、再定義に移る。再定義とは、サブクラスがスーパークラスで定義されたものの別バージョンを提供することである。

(再利用、拡張、再定義は、相互に排他的な関係ではないことに注意。サブクラスは3つの技術を全て使うこともできる)

再定義によって、既存のクラスを、特定の目的にそって、拡張したり、強化したり、無効化したりすることができる。メソッドを再定義することを「オーバーライド(overriding)」と呼ぶ。

ActionScript3.0では、インスタンスメソッドのオーバーライドは可能だが、インスタンス変数・静的変数・静的メソッドのオーバーライドはできない。

スーパークラスのインスタンスメソッドをオーバーライドするには、サブクラスの中で同名のインスタンスメソッドを定義し、overrideキーワードをメソッド定義の前に置く。
例:

public class A {
public function m () {
trace("A's m() was called");
}
}
public class B extends A {
override public function m () {
trace("B's m() was called");
}
}

この例では、Aのメソッドm()を、Aを継承するBの中でオーバーライドしている。

オーバーライドが成功するのは、オーバーライドするメソッドが、オーバーライドされるメソッドと、以下の4点で同じになっている場合だけである。
(1) 名前
(2) アクセスコントロール修飾子
(3) 引数の数
(4) 返り値のタイプ

今日の進捗:2735→2787/20168

コメントをどうぞ

コメントを残す