我们可以在Java中将顶级类声明为保护类还是私有类?
不,我们不能将顶级类声明为private或protected。它可以是public 或default(没有修饰符)。如果它没有修饰符,则应该具有默认访问权限。
语法
// A top level class
public class TopLevelClassTest {
//类体
}如果将 顶级类声明为私有,则编译器将抱怨此处不允许使用修饰符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");
}
}在上面的示例中,我们可以将类声明为protected,这将引发错误,表明此处不允许使用修饰符protected。因此上述代码无法执行。
输出结果
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");
}
}在上面的示例中,我们可以将类声明为private,这将引发错误,表明此处不允许使用修饰符private。因此上述代码无法执行。
输出结果
modifier private not allowed here