メンバークラス

メンバークラスとはクラス内の変数やメソッドと同様にクラスをメンバーとして宣言できます。

メンバー変数、メンバーメソッド同様にインスタンスメンバーstaticメンバーに定義することができます。

また、以下の修飾子も付加することもできます。

クラス修飾子 abstract
final
アクセス修飾子 public
protected
省略
private

オブジェクトの生成方法

オブジェクトの生成方法には外部クラス内で生成する方法と外部クラス外で生成する方法があります。
順番に見ていきたいと思います。

サンプルプログラム(Sample78.java)

外部クラス内でインスタンスメンバークラスの呼び出し方

class Sample78{
     //メンバークラス
     class Inner78{        
         void innerMethod(){
           System.out.println("これは、内部クラスです。");
         }
     }

    void method(){

           System.out.println("これは、外部クラスです");

         //内部クラスのオブジェクト生成
        Inner78 in = new Inner78();
        in.innerMethod();
   }
    public static void main(String args[]){
    Sample78 obj = new Sample78();

    obj.method();

    }

}
プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行してみます。

外部クラス内でのインスタンスメンバークラスのオブジェクトの生成は今までの生成方法と同じです。
Sample78にはInner78クラスという内部クラスが定義されています。
内部クラスにはInnerMethod()メソッドが宣言されています。
それを外部クラス内で通常のオブジェクト生成方法で生成されました。

Inner78 in = new Inner78();
in.innerMethod();

がそれです。

それをmainメソッド内で呼び出されています。

サンプルプログラムSample78_1.java)

外部クラス内でstaticメンバークラスの呼び出し方

class Sample78_1{
  //staticメンバークラス
    static class Inner78_1{

    void InnerMethod78_1(){
      System.out.println("これは、staticの内部クラスです");
     }
  } 
     void method(){
    System.out.println("これは外部クラスです");

    //内部クラスのオブジェクト生成
      Inner78_1 in = new Sample78_1.Inner78_1();
       in.InnerMethod78_1();
  }
    public static void main(String args[]){
  Sample78_1 obj = new Sample78_1();
    obj.method();

    }

}
プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

マルチドメイン対応、ビジネス仕様 高性能レンタルサーバー 【シックスコア】
3ヵ月、6ヶ月、12ヶ月…。好きなだけホームページやろうよ。
月額525円からのホームページサービス、プチ


コンパイル・実行します。

ここでは、まずメンバークラスとしてstaticで定義しています。
それを外部クラス内で呼び出しています。

staticメンバークラスもstatic変数やstaticメソッド同様にオブジェクトの生成は必要ありません。

staticメンバークラスの呼び出しは

new 外部クラス名.staticメンバークラス名();

で呼び出すことができるのです

サンプルプログラム(Sample78_2.java)

別のクラスからインスタンスメンバークラスの呼び出し方

class Sample78_2{
    public static void main(String args[]){
   Outer78_2 obj = new Outer78_2();
   Outer78_2.Inner78_2 in = obj.new Inner78_2();
  
    in.InnerMethod78_2();
    }

}
  class Outer78_2{

  //内部クラスです
    class Inner78_2{
        
      void InnerMethod78_2(){
          System.out.println("Inner78_2クラスです");
    }

  }
}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

あなたのWEBサイトをレベルアップさせるには【ドメイン】!
     ■ドメイン取るならお名前.com■
あなたならジュゲムがイイ
中級者以上向けブログJUGEM PLUS


コンパイル・実行してみます。

今回はクラスが3つあります。
今回は外部クラスがOuter78_2で内部クラスがInner78_2です。
それをSample78_2から呼び出しています。
Sample78_2内で外部クラスのオブジェクトを作成しています。

それが

Outer78_2 obj = new Outer78_2();

です。そのあとに内部クラスを呼び出しています。

内部クラスの呼び出し方は

外部クラス名.メンバークラス名 参照変数名 = 外部クラスのオブジェクト.new メンバークラス名();

になります。つまり

Outer78_2.Inner78_2 in = obj.new Inner78_2();

になるわけです。あとは参照変数を使い内部クラスのメソッドにアクセスしています。

それが、in.InnerMethod78_2();です。

サンプルプログラム(Sample78_3.java)

外部クラス外でstaticメンバークラスの呼び出し方

class Sample78_3{
    public static void main(String args[]){


    Outer78_3.Inner78_3 in = new Outer78_3.Inner78_3();
    in.InnerMethod78_3();
} } class Outer78_3{ static class Inner78_3{ void InnerMethod78_3(){ System.out.println("Inner78_3クラスです"); } } }
プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行します。

内部クラスの呼び出し方は

外部クラス名.static内部クラス名 参照変数名 = new 外部クラス名.static内部クラス名();

つまり

Outer78_3.Inner78_3 in = new Outer78_3.Inner78_3();

になります。

ページのトップへ戻る