我们可以在 Java 中将顶级类声明为 protected 或 private 吗?\

javaobject oriented programmingprogramming更新于 2024/5/9 15:35:00

不可以,我们不能将顶级类声明为 private 或 protected。它可以是 public default (无修饰符)。如果它没有修饰符,则应该具有默认访问权限。

语法

// 顶级类
   public class TopLevelClassTest {
      // 类主体
}
  • 如果将顶级类声明为private,则编译器会抱怨此处不允许使用修饰符 private。这意味着顶级类不能是 private,同样的情况也适用于protected访问说明符。
  • Protected 意味着该成员可由同一包中的任何类及其子类访问,即使它们位于另一个包中。
  • 顶级类只能具有 public、abstractfinal 修饰符,也可以根本不定义任何类修饰符。这称为默认/包可访问性。
  • 我们可以将 内部类声明为私有受保护,但不允许在外部 中这样做。
  • 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");
   }
}

在上面的例子中,我们可以将类声明为 protected,它将 抛出一个错误,指出 modifier protected not allowed here。因此上面的代码不会执行。

输出

modifier protected not allowed here


将类声明为 Private

示例

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");
   }
}

在上面的例子中,我们可以将类声明为private,它将抛出一个错误,指出修饰符 private 不允许在这里。所以上面的代码不会执行。

输出

modifier private not allowed here

相关文章