まだまだ意味不明な言葉だらけで、意識が朦朧としてきた(笑)
【注意】素人が迷走しながら書いてる記事なので参考にしないで下さい(苦笑)
インターフェイス
これはどうやら、「継承」と関係がある模様。
スーパークラスもポリモーフィズムも継承に関係する要素だったけど、
これらはカスタムクラスを作成する際に重要になってくるんだろうな。
でも、未だにカスタムクラスを使うようなプログラムを組んだことがないんだけどな(苦笑)
でも知ってて損はないだろうから、頑張ってみる。。。
「インターフェイス」って言葉自体は、聞いたことある。
このソフトのインターフェイスは、シンプルでかっこいいとか。
でもこのインターフェイスと、オブジェクト指向でいうインターフェイスは、少し違うみたい。
インターフェイスとは、異なる2つのモノの間を通信するための仲介役みたいなもので、やり取りする方法を定めた規格のことらしい。
これには3種類あって
「ハードウェアインターフェイス」
複数の装置間で通信するための規格
「ソフトウェアインターフェイス」
プログラム間でデータをやり取りするための規格
「ユーザーインターフェイス」
コンピュータとユーザー間で情報を表示/入力するための規格。
また、グラフィック表示やマウス操作などを用いたものを「グラフィカルユーザーインターフェイス」という。
よく耳にする「インターフェイス」は、ユーザーインターフェイスのことだったのね。
でも、ここで勉強するのは「ソフトウェアインターフェイス」になる。
さて、ここで継承をおさらい。
スーパークラスの機能をサブクラスへ引き継ぎ・追加・変更できる。
サブクラスを作成するときに、スーパークラスを既存のクラスから指定することができる。
で、ここがポイント。
「アクションスクリプトでは、指定できるスーパークラスは一つだけ」
二つ以上のスーパークラスから継承することを「多重継承」というらしいのだが、この多重継承はアクションスクリプトでは認められないとのこと。
でも、カスタムクラスでイベントリスナー使いたいんだけど、スーパークラスにはaddEventListenerメソッドがないのよ!ってな場合に、インターフェイスを使うとaddEventListenerメソッドが使えるようになる。
使えるようにするには、
1、インターフェイスを定義する
「このインターフェイスを使いますよ〜」って書くだけで、具体的な指示は書かない。
2、インターフェイスの実装
実装できるのはクラスに対してのみ。
複数のインターフェイスを実装することができる。
細かい書き方の規則があるようだが、それはまたの機会に。
3、クラスのインスタンスを生成
実際にタイムライン上で使うには、当然インスタンスを生成しなくちゃいけない。
では、インターフェイスってどんなの?ってことだが、
ActionSctipr3.0 コンポーネントリファレンスガイドを見ると
I (大文字アイ)で始まる斜体文字がインターフェイスらしい。
コンポーネントの中にあるので、探すの大変なんだけど、例に出したイベントリスナーを含むインターフェイスは
こちら
なんつーか、正直わからん(苦笑)
使ってみてはじめて理解できるのかもしれない。
ってこれでは今までと変わらないじゃないか!
前途多難だな。。。
とりあえず、結論。
・サブクラスで継承または拡張ができない場合に、インターフェイスを実装することで、そのインターフェイスに含まれるメソッドが使えるようになる。
・一つのクラスに複数のインターフェイスを実装できる。
例に出したaddEventLitenerメソッドは、EventDispatcherクラスにもある。
で、なにが違うのか調べてみた。
EventDispatcherクラスをみると、
EventDispatcher クラスは、IEventDispatcher インターフェイスを実装し、DisplayObject クラスの基本クラスです。
と書かれてある。
つまり、このクラスのaddEventListenerメソッドは、IEventDispatcherインターフェイスを実装することで使えるようにしてあるよってことだと思う。
リファレンスのインターフェイスの記事を見ると、次のように書かれてある。
インターフェイスは、関連しないオブジェクトの相互の通信を可能にするメソッド宣言の集合です。
この「相互の通信を可能にするメソッド」をインターフェイスにしているんだと思う。