Java 匿名クラスのサンプル

Javaの匿名クラスのサンプルです。

目次

匿名クラス

//匿名クラス
変数の型 変数 = new  クラス名/インターフェース名( ) {
    メソッドの処理を記述
};
//普通のクラス
変数の型 変数 = new  クラス名( );
  • 匿名クラスは、後ろに波括弧( { } )が付いています。波括弧の中にメソッドの処理を記述します。
  • 匿名クラスのnewの後ろは、既にあるクラスまたはインターフェースを指定していることになります。そのため、クラス名はないことになります。(=匿名クラス)
  • 匿名クラスはクラスを継承またはインターフェースを実装してインスタンスを生成します。
  • 1回限りの処理を行う時に使用します。
  • 最後にセミコロン(;)が必要です。
  • 無名クラスともいいます。

匿名クラスのサンプル(クラスを指定)

匿名クラスのサンプルです。

package test1;

class Color1{
	public void write1() {
		System.out.println("赤");
	}
}
public class Test1 {
	public static void main(String[] args) {

		Color1 c1 = new Color1() {
		};
		c1.write1(); //赤
	}
}

11,12行目は、匿名クラスです。
11行目のColor1は3行目のクラスを指していて継承しています。
13行目は、4-6行目のメソッドが実行されます。

 

匿名クラスのオーバーライドのサンプル

匿名クラスでオーバーライドを行うサンプルです。

package test1;

class Color1{
	public void write1() {
		System.out.println("赤");
	}
}
public class Test1 {
	public static void main(String[] args) {

		Color1 c1 = new Color1() {
			@Override
			public void write1() {
				System.out.println("黄");
			}
		};
		c1.write1(); //黄
	}
}

11-16行目は、匿名クラスです。
11行目のColor1は3行目のクラスを指していて継承しています。
4行目と13行目は同じメソッド名です。オーバーライドしています。
17行目は、メソッドを実行しています。オーバーライドにより「黄」が表示されます。

 

匿名クラスにメソッドを追加(エラー)

匿名クラスに新規メソッドを追加するサンプルです。

package test1;

class Color1{
	public void write1() {
		System.out.println("赤");
	}
}
public class Test1 {
	public static void main(String[] args) {

		Color1 c1 = new Color1() {
			public void write2() {
				System.out.println("黄");
			}
		};
//		c1.write2();
	}
}

11-15行目は、匿名クラスです。
11行目のColor1は3行目のクラスを指していて継承しています。
12行目は、3-7行目のクラスにないメソッドを追加しました。
16行目は、エラーになります。3-7行目のColor1クラスにwrite2メソッドはないためです。

 

匿名クラスのサンプル(インターフェースを指定)

匿名クラスのサンプルです。インターフェースを指定します。

package test1;

interface Color1 {
	void write1();
}
public class Test1 {
	public static void main(String[] args) {

		Color1 c1 = new Color1() {
			@Override
			public void write1() {
				System.out.println("青");
			}
		};
		c1.write1(); //青
	}
}

9-14行目は、匿名クラスです。
9行目のColor1は3行目のインターフェースを指していて実装しています。
15行目は、メソッドを実行しています。

関連の記事

Java クラスのサンプル
Java コンストラクタのサンプル
Java クラスの継承のサンプル
Java ラムダ式のサンプル
Java ラムダ式で関数型インターフェースを使用するサンプル

△上に戻る