2013-07-05 1 views
2

javac가 파일 이름이 다르더라도 javac가 기본 수정자를 사용하여 클래스를 컴파일하는 이유와 액세스 수정자가 공개, 비공개 또는 보호 인 경우 javac가 왜 왜 컴파일하지 않는가? 예 : 파일 이름 : 파일 클래스 foo는 {}javac는 파일 이름이 다르더라도 기본 액세스 수정자를 사용하여 클래스를 컴파일합니다.

가 오류없이 컴파일됩니다 및 클래스가 컴파일 점점되지 뿅 나는 공공, 개인 또는 보호를 추가 할 경우 어떤 일이 왜 그 때문에

을 설명 할 수있는 시험 내용 그런 다음 파일 이름이 같은 유형이 class 또는 interface
  • 이 canno 될 수 있어야한다 public 같은 유형을 선언하는 경우
  • 답변

    2

    은 두 가지 규칙

    • 있습니다 t는 private 또는 protected 외부 클래스입니다.

    첫 번째 요점은 Java 사양이 정의 된 이유입니다. 외부 클래스를 아무 것도 서버하지 않으므로 외부 클래스를 private로 선언 할 수 없습니다.

    • 소스 파일에는 원하는대로 유형을 지정할 수 있지만 하나의 공용 유형 만있을 수 있으며 공용 유형이있는 경우 파일 이름은 공용 유형과 일치해야합니다.
    +0

    기본 수정자를 사용하는 클래스의 경우 Java 작성자가 예외를 지정한 이유가 있습니까? –

    +0

    클래스가 패키지에 표시되어야하기 때문입니다. 'default' 접근 수준은 그것들이 그 패키지에서 볼 수 있다는 것을 의미합니다. –

    +0

    나는 filename의 경우 디폴트 수정 자로 클래스에 예외를 주었던 이유에 대해 물어 보았습니다 –

    관련 문제