当前位置: 首页 > 编程笔记 >

我们可以在Java中将顶级类声明为保护类还是私有类?

平学
2023-03-14
本文向大家介绍我们可以在Java中将顶级类声明为保护类还是私有类?,包括了我们可以在Java中将顶级类声明为保护类还是私有类?的使用技巧和注意事项,需要的朋友参考一下

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

语法

// A top level class
   public class TopLevelClassTest {
      //类体
}
    list-paddingleft-2">
  • 如果将 顶级类声明为私有,则编译器将抱怨此处不允许使用修饰符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
 类似资料:
  • 问题内容: 为什么Java不允许将顶级类声明为私有?除了“我们无法访问私人课程”之外,还有其他原因吗? 问题答案: 顶级类作为私有类是完全没有用的,因为没有人可以访问它。

  • 问题内容: 在我经历1000 s 之后,可能不需要 是否有 任何情况下, 该下降从将使在差异 封装 (或 使用 例如,通过外)?还考虑思考 如果 不 建议将其删除或使其与编码风格保持一致? 我说 没有 和 下降 ,但不知道真的。 编辑: 刚意识到 我 的方式肯定是错误的-至少对于的 字段 -声明这些字段为私有字段,然后在外部类中使用它们- 因为这会在字节码中生成( “ synthetic” )访问

  • 问题内容: 我只是想知道是否需要TimeSpan,以便我可以定义两次之间的时,分,秒。 由此我们可以有两次之间的时间间隔。喜欢 要么 有了这个,我们就可以用它了。 我不确定这是否已经在Java中实现但尚未被我发现。 问题答案: 借助SDK中的JDK 8日期时间库,您可以使用 要么 来自JodaTime的会.. 时间间隔表示两个时刻之间的时间段。间隔包括开始时刻,不包括结束。结束时刻始终大于或等于开

  • 本文向大家介绍我可以将JavaScript变量声明为特定类型吗?,包括了我可以将JavaScript变量声明为特定类型吗?的使用技巧和注意事项,需要的朋友参考一下 JavaScript变量没有类型。值具有类型。这是声明JavaScript变量的方式- 你仍然可以这样写- 正如您在上面看到的那样,在变量声明中指定类型没有任何好处。这是因为类型由变量的值决定。

  • 问题内容: 可以将方法指定为私有方法还是受保护方法? 会编译吗? 它会运行吗? 问题答案: 它会编译,不会运行(使用Eclipse测试)。

  • 问题内容: 我认为在这种情况下,无需声明公共构造函数,因为无论如何都无法在包外部访问该类。但是,当类只有包私有构造函数时,会产生一些隐藏的影响吗? 问题答案: 不,您不必声明公共构造函数。包私有构造函数将同样可用。包外部的类无论如何都无法使用构造函数,因为它们看不到该类。