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

时间:2012-09-09 05:40:26

标签: java c++ class-visibility

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

3 个答案:

答案 0 :(得分:38)

  • <强>爪哇

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

  • <强> C ++

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

答案 1 :(得分:17)

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

嵌套类,即另一个类中的类,可以像其他任何类成员一样成为public,package-private,protected或private。默认值(即没有修饰符的那个)是包私有的,只对同一个包中的类可见。

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

答案 2 :(得分:13)

根据§6.6.1 of the JLS

  

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

因此,默认情况下,Java类是 package-private

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

的摘录
  

班级的成员可以是

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