Java ネストしたクラスのサンプル

Javaのネストしたクラスのサンプルです。

目次

ネストしたクラス

  • クラスが入れ子になっているクラスです。
  • ネストしたクラスを含むクラスのことをエンクロージングクラスといいます。

ネストしたクラスのサンプル

ネストしたクラスのサンプルです。
3行目は、外部のクラスです。
6行目は、内部のクラス(インナークラス)です。
9行目は、インナークラスのメソッドです。
10行目のc1は4行目の外部クラスのメンバ変数を参照しています。インナークラスは、外部クラスの変数やメソッドへアクセスできます。
13行目は、外部のクラスのメソッドです。

package test1;

public class Color1 {
	private String c1 = "赤";
	
	public class Color2{
		private String c2 = "黄";
		
		public String getColor2() {
			return c1 + c2 + "青";
		};
	}
	public String getColor1(){
		return "白";
	}
}

インナークラスのインスタンスを生成するサンプル

上記のインナークラスのインスタンスを生成するサンプルです。
3行目は、Color2をインポートしています。test1はパッケージ名です。Color1は外部のクラスです。
8行目で、外部のColor1クラスのインスタンスを生成しています。
9行目は、外部のColor1クラスのメソッドを実行しています。
11行目は、c1.new Color2()という形式でインナークラスのインスタンスを生成しています。

package test1;

import test1.Color1.Color2;

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

		Color1 c1 = new Color1();
		System.out.println(c1.getColor1());//白
		
		Color2 c2 = c1.new Color2();
		System.out.println(c2.getColor2());//赤黄青
	}
}

インナークラスがstaticの場合のサンプル

インナークラスがstaticの場合のサンプルです。

static付きのネストしたクラスのサンプル

static付きのネストしたクラスのサンプルです。
6行目は、classの前にstaticがついています。
11行目は、4行目の外部クラスのメンバ変数c1へのアクセスができません。static付きのクラスは、外部のクラスの変数やメソッドへのアクセスが不可になります。

package test1;

public class Color1 {
	private String c1 = "赤";
	
	public static class Color2{
		private String c2 = "黄";
		
		public String getColor2() {
			//外部のクラスのc1にアクセス不可
			//return c1 + c2 + "青";
			return c2 + "青";
		};
	}
	public String getColor1(){
		return "白";
	}
}

インナークラスのインスタンスを生成するサンプル

上記のstaticのインナークラスのインスタンスを生成するサンプルです。
3行目は、Color2をインポートしています。test1はパッケージ名です。Color1は外部のクラスです。
11行目は、通常の形式でstaticのインナークラスのインスタンスを生成しています。

package test1;

import test1.Color1.Color2;

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

		Color1 c1 = new Color1();
		System.out.println(c1.getColor1());//白
		
		Color2 c2 = new Color2();
		System.out.println(c2.getColor2());//黄青		
	}
}

関連の記事

Java クラスのサンプル
Java コンストラクタのサンプル
Java クラスの継承とオーバーライドのサンプル
Java 匿名クラスのサンプル



△上に戻る