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

ubby3x7f  于 2022-12-28  发布在  Java
关注(0)|答案(4)|浏览(406)

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

xqkwcwgp

xqkwcwgp1#

*** java **:

默认情况下,类的可见性是包私有的,也就是说,只对同一个包中的类可见。

*C++

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

hs1ihplo

hs1ihplo2#

在Java中,一个 * top-level * 类要么是公共的,要么是非公共的。没有“private”。你只能使用public关键字,或者不使用它。如果你不使用它,它就是非公共的,也就是说,只有同一个包中的其他类才能看到它。
一个 nested 类,也就是说,一个类在另一个类中,可以像其他类成员一样,被设置为public、package-private、protected或private。默认的(也就是说,没有修饰符的)是package-private,只对同一个包中的类可见。
编辑:忘记了C++的答案,所以看看(并投赞成票)@zeller的答案。

bd1hkmkf

bd1hkmkf3#

根据JLS § 6.6.1,
如果顶级类或接口类型未声明为public,则只能从声明它的包中访问它。
因此,Java类默认为 * package-private *。
然而,这并不适用于C++。类缺乏可见性--只有它的成员才能拥有访问控制。参见C++11标准§ 11了解成员访问控制的信息。
类的成员可以是

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

unguejic4#

    • java **

默认情况下,Java类是包私有的。

    • C++ **

在C++中,没有像Java那样定义可见性。

相关问题