是一类在默认情况下Java和C ++的私人或公共?(Is a class private or pu

2019-06-28 01:09发布

是类默认情况下,Java和C ++的私人或公共?

Answer 1:

  • Java的

    默认情况下,类能见度包私有,即仅适用于在同一包中的类可见。

  • C ++:

    这个类有没有像Java定义的知名度。 如果你提供他们的编译单元,他们是可见的。



Answer 2:

在Java中, 顶级类是公共的或不公开。 没有“私人”。 您只能使用public关键字或将其关闭。 如果你把它关闭它是不公开的,也就是说,仅可见在同一个包的其他类。

嵌套类,也就是另一个类的内部类,可以公开,包私有,保护,或私人的,就像任何其他类别的成员。 默认值(即一个不带修饰)是包不公开,只有在同一个包中的类。

编辑:忘了C ++的答案,所以看到(和给予好评)@泽勒的答案。 :)



Answer 3:

根据该JLS的§6.6.1 ,

如果顶层类或接口类型未声明公开,则可以仅从在声明它在包装内访问。

所以,一个Java类是默认的包和私营部门

这并不适用于C ++,但是。 一类缺乏可见性 - 只有其成员可以访问控制。 请参阅有关成员访问控制信息中的C ++ 11标准的§11。 下面是¶1摘录...

一个类的成员可以是

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


文章来源: Is a class private or public by default in Java and C++?