Essential ActionScript3.0 読書メモ 第42回 継承

オブジェクト指向プログラミングにおいて、継承(inheritance)は2つ以上のクラスの形式的な関係を指す。継承によって、あるクラスが他のクラスの変数やメソッドを借りてくる。実用的・技術的な意味では、継承は単にあるクラスが他のクラスのコードを使えるようにするだけである。

しかし、継承という用語には、再利用以上の意味合いがある。継承は、技術的な道具である以上に知的な道具なのである。継承によって、クラスに特有の機能をもたせると同時に、クラスの見た目と振る舞いを他のクラスに似せることもできる。

継承の例:

public class A {
public var v = 10;
public function m () {
trace("Method m() was called");
}
}
public class B extends A{
// インスタンス変数もメソッドも無いクラス(Aを継承)
}

継承するには、クラス定義の際にextendsキーワードを用いる。上のコードでは、クラスBがクラスAを継承している。ここで、クラスBをインスタンス化すると、Bを通してAのインスタンス変数やメソッドを呼ぶことができる。

Bのような他のクラスを継承したクラス(サブクラス)は、Aのような継承元のクラス(スーパークラス)で使用できる機能を備えた上位機能(スーパーセット)である。サブクラスは、スーパークラスの機能を備え、さらに独自の機能を持つ。

ここで、クラスBに独自のメソッドを付け足してみる。

public class B extends A{
public function n () {
trace("Method n() was called");
}
}

クラスBは、クラスAの特殊化と呼ばれる。クラスBはクラスAの機能を基本とし、さらに独自の機能を必要に応じて拡張する。2つのクラスの継承関係において、クラスAのような拡張されるクラスを基本クラス(又は祖先クラス)、クラスBのような拡張するクラスを派生クラス(又は子孫クラス)と呼ぶ。

継承では、2つ以上のクラスを含むこともできる。例えば、クラスBを拡張するクラスCを定義すれば、クラスCはクラスBの機能に加え、クラスAの機能も利用することができる。また、スーパークラスは、サブクラスをいくつでも持つことができる。

クラスの継承関係は図で表すことができる。例えば、UML(Unified Modeling Language)を用いてクラスの関係を図式化したりする。

今日の進捗:2554→2715/20168

コメントをどうぞ

コメントを残す