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

the*_*ner 28 c++ java class-visibility

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

zel*_*ler 39

  • Java:

    默认情况下,类可见性是包私有的,即仅对同一包中的类可见.

  • C++:

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

  • +1右:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html (3认同)

Ray*_*oal 19

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

一个嵌套类,也就是另一个类的内部类,可以公开,包私有,保护,或私人的,就像任何其他类别的成员.默认值(即没有修饰符的那个)是包私有的,仅对同一包中的类可见.

编辑:忘了C++答案,所以看看(和upvote)@ zeller的答案.:)


old*_*inb 13

根据JLS的§6.6.1,

如果顶级类或接口类型未声明为public,则只能从声明它的包中访问它.

因此,Java类默认是package-private.

但是,这不适用于C++.一个类缺乏可见性 - 只有其成员才能拥有访问控制权.有关成员访问控制的信息,请参阅C++ 11标准的第11节.这是1的摘录......

一个班级的成员可以

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

  • +1.此外,在C++类中,默认成员访问是"私有",而对于`struct`,它是公共的. (2认同)