在Java和C++中,默认情况下是私有或公共类



在Java和C++中,类默认是私有的还是公共的?

  • Java:

    默认情况下,类的可见性是包专用的,即仅对同一包中的类可见。

  • C++

    该类没有像Java中那样定义可见性。如果您将它们包含在编译单元中,则它们是可见的。

在Java中,顶级类是公共的或非公共的。没有"私人"。您只能使用public关键字或将其关闭。如果将其关闭,则它是非公共的,即仅对同一包中的其他类可见。

嵌套的类,即另一个类中的一个类,可以像任何其他类成员一样设置为公共、包私有、受保护或私有。默认值(即没有修饰符的)是包私有的,仅对同一包中的类可见。

编辑:忘记了C++的答案,所以请参阅(并投票)@zeller的答案。:)

根据§JLS的6.6.1,

如果一个顶级类或接口类型没有被声明为公共的,那么只能从声明它的包中访问它。

因此,Java类在默认情况下是包私有

然而,这并不适用于C++。类缺乏可见性——只有其成员才能拥有访问控制权。请参阅§11,用于成员访问控制的信息。以下是¶1…

一个类的成员可以是

  • private;也就是说,它的名称只能由声明它的类的成员和朋友使用
  • protected;也就是说,它的名称只能由它所在类的成员和朋友使用声明,由该类派生的类以及它们的朋友声明(见11.4)
  • public;也就是说,它的名称可以在任何地方使用,而不受访问限制

Java

默认情况下,Java类是包私有的。

C++

在C++中,没有像Java那样定义可见性。

最新更新