在 Java 中,能否将顶级类声明为 protected 或 private?\n


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

语法

// A top level class
   public class TopLevelClassTest {
      // Class body
}
  • 如果将顶级类声明为private,编译器会报错“此处不允许使用修饰符 private”。这意味着顶级类不能是 private,同样的规则也适用于protected访问修饰符。
  • Protected表示成员可以被同一中的任何类以及子类访问,即使子类位于另一个包中。
  • 顶级类只能具有public、abstractfinal修饰符,也可以根本不定义任何类修饰符。这称为默认/包访问权限。
  • 我们可以将内部类声明为privateprotected,但外部类不允许这样做。
  • 可以在一个 Java 源文件中定义多个顶级类,但最多只能有一个public 顶级类声明。文件名必须与 public 类的名称匹配。


将类声明为 Protected

示例

实时演示

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,它将抛出一个错误,提示“此处不允许使用修饰符 protected”。因此,以上代码无法执行。

输出

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

更新于: 2019-07-30

7K+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告