在 Java 中,能否将顶级类声明为 protected 或 private?\n
否,我们不能将顶级类声明为private 或 protected。它可以是public 或默认(无修饰符)。如果它没有修饰符,则假定其具有默认访问权限。
语法
// A top level class public class TopLevelClassTest { // Class body }
- 如果将顶级类声明为private,编译器会报错“此处不允许使用修饰符 private”。这意味着顶级类不能是 private,同样的规则也适用于protected访问修饰符。
- Protected表示成员可以被同一包中的任何类以及子类访问,即使子类位于另一个包中。
- 顶级类只能具有public、abstract和final修饰符,也可以根本不定义任何类修饰符。这称为默认/包访问权限。
- 我们可以将内部类声明为private或protected,但外部类不允许这样做。
- 可以在一个 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
广告