}}通常、OnClickListenerのようなインターフェースを使うとき、それをimplementsしたクラスを作成し、それを実行クラスで使用します。(1)のようなリスナークラスを作成し、実行クラスの側では(2)のように、インスタンス化して使います。ここで定義しているHelloListenerクラスは、MainActivity2クラスの中でしか利用しないクラスです。このようなクラスを、別々のクラスとして定義するのは管理上望ましくありません。そこで、以下のようにコードを書き換えます。ボタンをクリックしたときのリスナークラス。}}このクラス内には、MainActivity3クラスのメンバとしてHelloListenerがあります。これは、classキーワードがあることからわかるように、MainActivity3クラス内で入れ子に定義されたクラスであり、ネスト(入れ子)クラスの一種です。クラスのメンバであることから、より限定的にメンバクラスとも呼ばれます。このようなものが存在するのでしょうか。それは、クラス再利用の防止と管理のためです。先ほども述べたように、HelloListenerクラスは、MainActivity3クラス以外では使いようがないクラスです。クラスを設計するうえで、あるクラスだけにしか使われないクラスを作る必要がでてくる場合があります。その際に、独立したクラスとして定義した場合、想定されずに他から利用される可能性が高くなり、それはすなわち、バグにつながります。別ファイルで作ることで、どのクラスとどのクラスが結びついているのかがわからなくなります。これらを防止するためには、クラス内でクラスを作成した方がよく、そのためにネストクラス(メンバクラス)があるのです。厳密に言えば、メンバクラスの場合は、フィールドやメソッドといった他のメンバ同様、public宣言にすることで、外部からも参照できます。それではわざわざメンバクラス化する意味がありません。そこで、private宣言にし、完全に隠蔽します。今回のサンプルでは、HelloListenerクラスはprivate宣言にしてあります。NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Technologies。執筆コミュニティ「WINGSプロジェクト」代表。