Java 匿名クラスのサンプル

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

目次

匿名クラス

変数の型 変数 = new  クラス名/インターフェース名( ) {
    メソッドの処理を記述
};
  • newはインスタンス化するときのnewです。
  • newの後ろは、すでにあるクラスまたはインターフェースを指定します。
    →そのクラスを継承またはそのインターフェースを実装してインスタンスを生成するイメージです。
    →この生成されたインスタンスは、クラス名がありません。(=匿名クラス)
  • 1回限りの処理を行う時に使用します。
  • 最後にセミコロン(;)が必要です。

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

匿名クラスのサンプルです。クラスを指定します。

11,12行目は、匿名クラスです。Color1は3行目のクラスです。
13行目は、メソッドを実行しています。

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-16行目は、匿名クラスです。
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() {
			@Override
			public void write1() {
				System.out.println("黄");
			}
		};
		c1.write1(); //黄
	}
}

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

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

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

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();
	}
}

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

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

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

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(); //青
	}
}

関連の記事

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

 はまったらエンジニア特化型Q&Aサイト
【teratail(テラテイル)】で質問しましょう!


△上に戻る