我们可以在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