ポリモーフィズム(多態性)
ActionScript // 2009年05月02日 - 11:34
ポリモーフィズムってすばらしい。サブクラスはスーパークラスとして型宣言できるだけでなく、JavaやActionScriptにおいては、インターフェイスを使うことでその実装クラスがインターフェイスの型として宣言できるところがなんともすばらしい。「スーパークラスとして」というのは、要はMovieClipはSpriteの継承だからSprite型としても宣言できまっせという当たり前といえば当たり前な話なんだけど、すばらしいのはインターフェイス。
インターフェイスは、多重継承を許さないJavaやActionScriptで使えるちょっと特殊な存在。インターフェイスにはメソッドのシグネチャー(名前、引数、戻り値の型)しか書かない(つまり中身の処理は書かない)、一見「え?」と思う内容なんだけど、そのインターフェイスを実装したクラスには、インターフェイスに書かれたメソッドを”必ず実装しなくてはならない”というルールが強いられる。(もしインターフェイスに書かれたメソッドを実装しなかった場合、コンパイル時にエラーが発生する。)
例え全く違うタイプのクラスを複数作った場合でも、同じインターフェイスが実装されていればそのインターフェイスのメソッドは”必ず実装されている”ことになるため、同じ型として宣言して、同じメソッドを呼び出すことができる。(例え処理の中身がコメントだけの空っぽメソッドだったとしても、処理の内容が全くことなるメソッドだったとしても、すべて「共通のメソッド名」で呼び出せることが約束される。)
型は違えど共通のメソッドを持っている。だったら、せめてその共通のメソッドだけは共通の型として扱えてもいいんじゃない?という親切設計なのだ。
コメント
ページトップに戻る