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