默认情况下,Java和C ++中的类是私有的还是公共的?
答案 0 :(得分:38)
<强>爪哇强>:
默认情况下,类可见性是包私有,即仅对同一包中的类可见。
<强> C ++ 强>:
该类没有像Java那样定义的可见性。如果将它们包含在编译单元中,它们是可见的。
答案 1 :(得分:17)
在Java中,顶级类是公共类还是非公共类。没有“私人”。您只能使用public关键字或将其关闭。如果你把它关掉它是非公开的,即只对同一包中的其他类可见。
嵌套类,即另一个类中的类,可以像其他任何类成员一样成为public,package-private,protected或private。默认值(即没有修饰符的那个)是包私有的,只对同一个包中的类可见。
编辑:忘记了C ++的答案,所以看看(和upvote)@ zeller的答案。 :)答案 2 :(得分:13)
如果顶级类或接口类型未声明为public,则只能从声明它的包中访问它。
因此,默认情况下,Java类是 package-private 。
但是,这不适用于C ++。一个类缺乏可见性 - 只有其成员才能拥有访问控制权。有关成员访问控制的信息,请参阅C ++ 11标准的第11节。这是¶1...
的摘录班级的成员可以是
private
;也就是说,它的名称只能由声明它的类的成员和朋友使用。protected
;也就是说,它的名称只能由其所在类的成员和朋友使用 通过从该类派生的类和他们的朋友声明(见11.4)。public
;也就是说,它的名称可以在没有访问限制的任何地方使用。