我们可以在 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、abstract 和 final 修饰符,也可以根本不定义任何类修饰符。这称为默认/包可访问性。
- 我们可以将 内部类声明为私有或受保护,但不允许在外部 类中这样做。
- 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