Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 최상위 클래스를 보호 또는 비공개로 선언할 수 있습니까?

<시간/>

아니요 , 최상위 클래스를 비공개 또는 보호로 선언할 수 없습니다. . 공개 일 수 있습니다. 또는 기본값( 수정자 없음). 수식어가 없으면 기본 액세스 권한이 있어야 합니다.

구문

// 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