2013-10-10 2 views
3
interface MyInter { 
    public void display(); 
} 

class OuterClass8 { 

    public static void main(String arg[]) { 

     MyInter mi=new MyInter() { 

      public void display() { 
       System.out.println("this is anonymous class1"); 
      } 
     }; 

     mi.display(); 
    } 
} 

내가 아는 한 인터페이스를 인스턴스화 할 수 없으므로 어떻게 될까요? 당신은 MyInter 인터페이스를 구현하는 익명의 내부 클래스를 선언하는익명 내부 클래스의 인터페이스는 어떻게 작동합니까?

MyInter mi=new MyInter(){ 

    public void display() { 
     System.out.println("this is anonymous class1"); 
    } 
}; 

를 선언함으로써

+0

다음 링크에서 커뮤니티 위키를 확인하십시오 : HTTP : // 유래 .com/questions/355167/how-are-anonymous-inner-classes-in-java – user2339071

답변

3

인터페이스를 인스턴스화 할 수는 없지만 인터페이스를 구현하는 클래스의 객체에 대한 인터페이스 참조를 제공 할 수 있습니다. 코드에서 인터페이스를 구현하고 해당 클래스의 객체를 생성하고 해당 클래스의 참조를 제공하십시오. 이 잘못

3

. 그것은 예를

MyInterImpl mi = new MyInterImpl(); 

public class MyInterImpl implements MyInter { 
    public void display() { 
     System.out.println("this is anonymous class1"); 
    } 
} 

을하고 만드는 비슷하지만 익명을 다하고 있습니다.


인터페이스를 인스턴스화 할 수 없다고 생각하면 정확합니다. 당신은 할 수 없다

MyInter mi = new MyInter(); 

그러나 위에서 제시 한 것을 할 수있다.

2

예, 당신이 추상 클래스 나 인터페이스를 인스턴스화 할 수 없습니다 염두에 두어야 .. :

MyInter mi = new MyInter(); 

하지만 당신은 슈퍼 클래스 참조 변수가를 보유 할 수 읽기 권한이 있어야합니다 하위 클래스 객체에 대한 참조 그러나 슈퍼 클래스로 MyInter을 가지고, 당신은 객체, 익명 객체를 생성하는

MyInter mi=new MyInter(){ 

    public void display() { 
     System.out.println("this is anonymous class1"); 
    } 
}; 

를 만들어 너무

..

관련 문제