2013-06-02 2 views
7

어떻게 .... 내가 완전히 당황하고있어 작업이 코드자바에서 인터페이스 객체를 어떻게 만들 수 있습니까?

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

당신이 ([인터넷 검색] 시도해 봤어 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

당신은 Google 것들을 시도하고 자바 기초를 보았습니까? 이 링크를 참조하십시오. http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html –

답변

18

해당 구문을 사용하면 anonymous class을 만들 수 있습니다. 이는 매우 적합합니다.

익명 클래스는 내부적으로 EnclosingClass$n이라는 클래스로 컴파일되며, 여기서 둘러싸는 클래스 이름 앞에 $ 기호가 붙습니다. 추가 익명 클래스마다 n이 증가합니다.

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

Interface $ 1이 추상 클래스 인 경우 어떻게됩니까? –

+1

@RamaKrishna 익명의 수업은 추상적이어서는 안됩니다. 'check' 인터페이스가 추상 클래스 인 경우 익명 구현은 비슷하게'Interface $ 1'로 명명됩니다. – Vulcan

5

당신은 인터페이스 검사를 구현 anonymous class의 (즉시) 인스턴스를 만들 수 있습니다.

2

사용자 인터페이스 참조의 객체를 저장할 수 :

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

그런 다음, main의 코드로 컴파일

내부적으로 새로 정의 된 익명 클래스를 사용 :이 다음 클래스가 생성되는 것을 의미한다 클래스를 구현합니다. 익명의 클래스를 구현하고 JAVA에서 절대적으로 유효한 인터페이스 참조에 할당하고 있습니다.

2

익명 클래스입니다. 체크 클래스는 인터페이스입니다. 익명 클래스는 해당 인터페이스의 구현을 즉시 정의합니다. 따라서 Interface 구현을위한 별도의 클래스를 만들지 않아도됩니다. 이 방법은 코드에서 다른 곳에서이 구현을 필요로하지 않는다는 것을 알고있을 때만 유용합니다.

이 설명이 도움이되기를 바랍니다 !!

관련 문제