1. 程式人生 > 其它 >Java 匿名類

Java 匿名類

技術標籤:javajava

Java 中可以實現一個類中包含另外一個類,且不需要提供任何的類名直接例項化。

主要是用於在我們需要的時候建立一個物件來執行特定的任務,可以使程式碼更加簡潔。

匿名類是不能有名字的類,它們不能被引用,只能在建立時用 new 語句來宣告它們。

匿名類語法格式:

class outerClass {

    // 定義一個匿名類
    object1 = new Type(parameterList) {
         // 匿名類程式碼
    };
}

以上的程式碼建立了一個匿名類物件 object1,匿名類是表示式形式定義的,所以末尾以分號 ; 來結束。

匿名類通常繼承一個父類或實現一個介面。
在這裡插入圖片描述
匿名類繼承一個父類
以下例項中,建立了 Test1 類,該類只有一個方法 display(),Demo 類繼承了 Polygon 類並重寫了 Test1 類的 display() 方法

例項:

class Test1 {
	   public void display() {
	      System.out.println("在 test 類內部");
	   }
	}

	class Demo {
	   public void createClass() {

	      // 建立的匿名類繼承了 Polygon 類
	      Test1 t1 =
new Test1() { public void display() { System.out.println("在匿名類內部。"); } }; t1.display(); } } class Main { public static void main(String[] args) { Demo demo = new Demo(); demo.createClass(); } }

執行以上程式碼,匿名類的物件 t1 會被建立,該物件會呼叫匿名類的 display() 方法,輸出結果為:

在匿名類內部。

匿名類實現一個介面
以下例項建立的匿名類實現了 Test1 介面:

例項

interface Test1 {
	   public void display();
	}

	class Demo {
	   public void createClass() {

	      // 匿名類實現一個介面
	      Test1 t1 = new Test1() {
	         public void display() {
	            System.out.println("在匿名類內部。");
	         }
	      };
	      t1.display();
	   }
	}

	class Main {
	   public static void main(String[] args) {
	      Demo an = new Demo();
	      an.createClass();
	   }
	}

輸出結果為:

在匿名類內部。