2011-08-20 8 views
15

(인터페이스를 구현) 공용 인터페이스 및 공개 클래스자바 공용 인터페이스 및 공공 클래스는 단일 된 .java 파일에서

나는 자바 코딩에 새로 온 사람과이 할 수 있습니다 그것은 .java 파일에 2 개 이상의 public 클래스를 포함 할 수없는 대부분의 장소에 작성됩니다. 나는 그것이 인터페이스와 클래스에 대해서도 사실인지 알고 싶다.

+0

[Java : 한 파일에 여러 클래스 선언] 가능한 복제본 (http://stackoverflow.com/questions/2336692/java-multiple-class-declarations-in-one-file) –

답변

14

아니요, 불가능합니다. .java 파일 당 최대 하나의 최상위 공개 유형이있을 수 있습니다. JLS 7.6. Top Level Type Declarations은 다음과 같이 명시합니다.

[& hellip;] 컴파일 단위당 하나 이상의 [최상위 공개] 유형이 있어야합니다.

그러나 동일한 파일에 패키지로 보호 된 클래스가있을 수 있습니다.

public interface Test { 
    // ... 
} 

class TestClass implements Test { 
    // ... 
} 
+2

[JLS §7.6 최상위 수준 유형 선언] (http://java.sun.com/docs/books/jls/third_edition/html/packages.html#26783) –

3

자바 규칙은 단 하나의 공용 클래스 또는 인터페이스 소스 파일에 표시 할 수 있으며, 이름이 파일과 일치해야한다는 것입니다 (예 : 테스트 : 당신이 Test.java라는 이름의 파일에 넣어 경우에 (잘 컴파일 된 .java -> 공용 클래스 테스트 또는 공용 인터페이스 테스트,하지만 모두)

7

중첩 된 클래스를 사용할 경우 하나 개의 파일에 원하는만큼 공개 수업을 할 수 있습니다 예에서 :

public interface I { 
    public class C implements I { 
     ... 
    } 

    public class D implements I { 
     ... 
    } 

    ... 
} 
..
+0

정확! 나는 비슷한 대답을 올리려고했다. 그런 구조를 갖는 것이 무엇인지 말해 주시겠습니까? 클래스 'C'를 인스턴스화하려고하면 'I'에 정의 된 메소드를 다시 구현해야합니다. 클래스 'C'를 무시할 때 이미 수행 한 경우에도 마찬가지입니다. 추신 나는 'C'가 정적 일 필요는 없다고 생각합니다. – Gevorg

+0

@Gevorg - static 키워드는 최상위 클래스와 같은 것을 의미합니다. 유일한 차이점은 C를'I.C'로만 참조 할 수 있다는 것입니다. – Kal

+1

특별한 인스턴스가 필요하지 않은 경우 'I'인터페이스와 'I'인터페이스를 정의 할 경우이 관용구를 사용합니다. 내가 그들을 좋아할 수 있기 때문에 나는 이것을 좋아한다 - 그들을 여러 파일들로 분산시킬 필요가 없다. 'setParam (new Interface.Default());'내부 클래스를 사용하지 않았다면 영리한 이름을 생각해야했습니다.이 방법은 그냥'Default '. – emboss

4
public interface A 
{ 
    public void helloWorld(); 

    public static class B implements A{ 

     @Override 
     public void helloWorld() { 
      System.out.print("Hello World"); 

     } 

    } 
} 
0

인터페이스를 이해하면서 다음 단계로도 이해해야합니다 (interface driven programming). 그것은 인터페이스의 실제 사용이 무엇인지 말해줍니다. 자바 (또는 다른 언어) 프로그램에서 어떤 역할을하는지.