継承1(extends)

090705-one31

本日は、「継承」を学習する。

意味を理解する

継承はオブジェクト指向のプログラムには欠かすことのできないものらしい。
あるクラスが、別のクラスの変数とメソッド定義を借りる(または受け継ぐ)という、
2つ以上のクラスでの形式的名関係性のことを言うらしい。

噛み砕くと、クラスを別のクラスで使えるようにすることらしい。

参考書には、継承させることで継承されたクラスは元のクラスとある点では
そっくりにしながら、他にはないそれ自体の機能を追加することが可能に
なると書いてあった。

「北斗神拳を継承したケン○ロウが、北斗神拳も使いつつ、
それ以外の独自の技を編み出して使えるようになった。」

と同じ意味なのだろうか・・・。
たぶんそうに違いない。

継承の入門プログラム

さっそく、入門編の継承のサンプルを書いてみる。

[as3]
public class iteru{
public var iteruVal = 10;

public function hand(){
trace("メソッドhandが実行");
}
[/as3]

iteruクラスがあったとする。
これを継承したkoIteruクラスを作る。
koIteruクラスにはさらにfootメソッドを追加してみた。

[as3]
public class koIteru extends iteru{
public function foot(){
trace("メソッドfootが実行");
}
[/as3]

koIteruインスタンスはkoIteruと、
そのスーパークラスiteruの持つすべての
メソッドと変数を使うことができるようになる。

[as3]
var koIteru = new koIteru();
//iteruから継承した変数を表示
trace(koIteru.iteruVal); //表示:10

//iteruで定義されている、継承したメソッドの呼び出し
koIteru.hand(); //→表示:メソッドhandが実行

//koIteruで定義されているメソッドの呼び出し。
koIteru.foot(); //→表示:メソッドfootが実行
[/as3]

といった感じでkoIteruがiteruの機能を継承したことがわかるはず。
これと同様に、koIteruをmagoIteruが継承すると、
iteruの機能とkoIteruの機能を有したmagoIteruを作れる。

これは便利。