イベントとイベントリスナー (2/4)
作成:2010-01-14 13:27
更新:2011-10-11 15:16
更新:2011-10-11 15:16
■ActionListenerクラスを作る
では、ソースコードを見てみましょう。まず、イベント関係のクラスは「java.awt.event」というところにまとめられています。ですから、これを最初にimportしておく必要があります。最初にある「import java.awt.event.*;」は、そのためのものだったわけですね。
そして、Test5クラスとClickActionクラスの2つがある理由も、わかりましたね。Test5が本体で、ClickActionが「代理人クラス」というわけです。では、まず代理人のほうを見ておきましょう。このクラス、最初の定義部分がちょっと変です。
それなら、これを継承すればいいや…と思った人。よく見るとextendsは使ってませんよ? implementsというものが使ってあります。
この「ActionListener」は、実は「インターフェイス」クラスと呼ばれる、ちょっと特別なクラスなのです。インターフェイスは、詳しく説明するとちょっと難しいのですが、要するに「継承しないで機能だけ使えるようにできる特別なクラス」と思えばよいでしょう。
インターフェイスは、implementsというもので組み込みます。これは、extendsとは別のものなのですね。従って、何かのクラスを継承して(extendsして)も、更に機能を追加できるのです。
Javaでは、継承で使えるのは1つのクラスだけです。「2つのクラスを継承する」ということはできないんです。だから「Frameを継承して、更にイベント処理の機能も欲しい」なんて場合、2つを継承できないのでどちらか1つを諦めないといけない。それじゃまずい…ということで、「継承しないけど機能だけこっそり使える」という仕組みを用意した、それがimplementsで使えるインターフェイスクラスというものです。
まあ、とりあえずは「イベント処理の代理人クラスはimplementsで組み込む」とだけ覚えておけばいいでしょう。
そして、Test5クラスとClickActionクラスの2つがある理由も、わかりましたね。Test5が本体で、ClickActionが「代理人クラス」というわけです。では、まず代理人のほうを見ておきましょう。このクラス、最初の定義部分がちょっと変です。
class ClickAction implements ActionListener {見たことのないものがくっついてますね。「implements ActionListener」というやつです。このActionListenerというのが「代理人の素」です。要するに、この中に代理人の機能がつまってるわけですね。
それなら、これを継承すればいいや…と思った人。よく見るとextendsは使ってませんよ? implementsというものが使ってあります。
この「ActionListener」は、実は「インターフェイス」クラスと呼ばれる、ちょっと特別なクラスなのです。インターフェイスは、詳しく説明するとちょっと難しいのですが、要するに「継承しないで機能だけ使えるようにできる特別なクラス」と思えばよいでしょう。
インターフェイスは、implementsというもので組み込みます。これは、extendsとは別のものなのですね。従って、何かのクラスを継承して(extendsして)も、更に機能を追加できるのです。
Javaでは、継承で使えるのは1つのクラスだけです。「2つのクラスを継承する」ということはできないんです。だから「Frameを継承して、更にイベント処理の機能も欲しい」なんて場合、2つを継承できないのでどちらか1つを諦めないといけない。それじゃまずい…ということで、「継承しないけど機能だけこっそり使える」という仕組みを用意した、それがimplementsで使えるインターフェイスクラスというものです。
まあ、とりあえずは「イベント処理の代理人クラスはimplementsで組み込む」とだけ覚えておけばいいでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
※関連コンテンツ