아니요 , 최상위 클래스를 비공개 또는 보호로 선언할 수 없습니다. . 공개 일 수 있습니다. 또는 기본값( 수정자 없음). 수식어가 없으면 기본 액세스 권한이 있어야 합니다.
구문
// A top level class public class TopLevelClassTest { // Class body }
- 최상위 클래스인 경우 비공개로 선언됨 컴파일러는 여기서 private 수정자가 허용되지 않는다고 불평합니다. 즉, 최상위 클래스는 비공개일 수 없습니다 , 보호된에도 동일하게 적용될 수 있습니다. 또한 액세스 지정자.
- 보호됨 동일한 패키지 및 하위 클래스 의 모든 클래스에서 멤버에 액세스할 수 있음을 의미합니다. 다른 패키지에 있더라도 .
- 최상위 클래스는 공개, 추상만 가질 수 있습니다. 및 최종 수식어가 있으며 클래스 수정자를 전혀 정의하지 않을 수도 있습니다. 이를 기본/패키지라고 합니다. 접근성.
- 내부 클래스를 선언할 수 있습니다. 비공개로 또는 보호 , 그러나 외부에서는 허용되지 않습니다. 수업 .
- 둘 이상의 최상위 클래스 Java 소스 파일에 정의할 수 있지만 최대 하나의공개 최상위 클래스가 있을 수 있습니다. 선언. 파일 이름은 공개 클래스의 이름과 일치해야 합니다.
클래스를 보호됨으로 선언
예시
protected class ProtectedClassTest { int i = 10; void show() { System.out.println("Declare top-level class as protected"); } } public class Test { public static void main(String args[]) { ProtectedClassTest pc = new ProtectedClassTest(); System.out.println(pc.i); pc.show(); System.out.println("Main class declaration as public"); } }
위의 예에서 클래스를 보호됨으로 선언할 수 있습니다. , 오류가 발생합니다. 수정자 보호는 여기에서 허용되지 않음이라고 말합니다. . 따라서 위의 코드는 실행되지 않습니다.
출력
modifier protected not allowed here
클래스를 비공개로 선언
예시
private class PrivateClassTest { int x = 20; void show() { System.out.println("Declare top-level class as private"); } } public class Test { public static void main(String args[]) { PrivateClassTest pc = new PrivateClassTest(); System.out.println(pc.x); pc.show(); System.out.println("Main class declaration as public"); } }
위의 예에서 클래스를 비공개로 선언할 수 있습니다. , 오류가 발생합니다. 수정자 비공개는 여기에서 허용되지 않음이라고 말합니다. . 따라서 위의 코드는 실행되지 않습니다.
출력
modifier private not allowed here