2013-06-02 32 views
7

這是怎麼代碼工作中I M完全不解....我們如何在java中創建接口對象?

package com.servletpack.examples; 

interface check { 
    public void message(); 
} 
public class Interface { 
    public static void main(String[] args) { 
     try { 
      check t = new check() {//how???????????????? 
       public void message() { 
        System.out.println("Method defined in the interface"); 
       } 
      }; 
      t.message(); 
     } catch (Exception ex) { 
      System.out.println("" + ex.getMessage()); 
     } 
    } 
} 
+2

您是否試過[googling](https://www.google.co.il/search?q=How+can+we+create+object+of+interface+in+java%3F&rlz=1C1CHEU_iwIL474IL474&oq=How+可以+我們+創建+對象+的+界面+在+ java%3F&aqs = chrome.0.57j60l2j0l3.802j0&sourceid = chrome&ie = UTF-8)嗎? – BobTheBuilder

+0

你有沒有嘗試谷歌的東西,並看到JAVA基礎?參考此鏈接http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html –

回答

18

使用該語法,您創建了一個anonymous class,這是完全合法的。

在內部,匿名類被編譯爲它們自己的類,名爲,其中封閉類的名稱位於$符號的前面。和n增加每個額外的匿名類。這意味着下面的類被創建:

class Interface$1 implements check { 
    public void message() { 
     System.out.println("Method defined in the interface"); 
    } 
} 

然後,在main代碼編譯成在內部使用新定義的匿名類:

check t = new Interface$1(); 
t.message(); 
+0

如果Interface $ 1是一個抽象類呢? –

+1

@RamaKrishna匿名類不能抽象。如果接口'check'是一個抽象類,它的匿名實現同樣被命名爲'Interface $ 1'。 – Vulcan

5

你正在創建一個實現該接口檢查anonymous class實例(飛)。

2

你的接口的參考可以容納的對象實施課程。您正在實現一個匿名類並將其分配給接口的引用,這在JAVA中是絕對合法的。

2

這是匿名類。你的檢查類是一個接口。匿名類定義了一個即時接口的實現。所以它可以幫你避免爲Interface的實現創建一個獨立的類。只有當你知道你永遠不需要這個實現在代碼中的其他地方時,這種方法纔有用。

希望這個解釋有幫助!

相關問題