在Java和C++中,类默认是私有的还是公共的?
xqkwcwgp1#
*** java **:
默认情况下,类的可见性是包私有的,也就是说,只对同一个包中的类可见。
*C++:
类没有像Java那样定义的可见性。如果你把它们包含在编译单元中,它们是可见的。
hs1ihplo2#
在Java中,一个 * top-level * 类要么是公共的,要么是非公共的。没有“private”。你只能使用public关键字,或者不使用它。如果你不使用它,它就是非公共的,也就是说,只有同一个包中的其他类才能看到它。一个 nested 类,也就是说,一个类在另一个类中,可以像其他类成员一样,被设置为public、package-private、protected或private。默认的(也就是说,没有修饰符的)是package-private,只对同一个包中的类可见。编辑:忘记了C++的答案,所以看看(并投赞成票)@zeller的答案。
bd1hkmkf3#
根据JLS § 6.6.1,如果顶级类或接口类型未声明为public,则只能从声明它的包中访问它。因此,Java类默认为 * package-private *。然而,这并不适用于C++。类缺乏可见性--只有它的成员才能拥有访问控制。参见C++11标准§ 11了解成员访问控制的信息。类的成员可以是
private
protected
public
unguejic4#
默认情况下,Java类是包私有的。
在C++中,没有像Java那样定义可见性。
4条答案
按热度按时间xqkwcwgp1#
*** java **:
默认情况下,类的可见性是包私有的,也就是说,只对同一个包中的类可见。
*C++:
类没有像Java那样定义的可见性。如果你把它们包含在编译单元中,它们是可见的。
hs1ihplo2#
在Java中,一个 * top-level * 类要么是公共的,要么是非公共的。没有“private”。你只能使用public关键字,或者不使用它。如果你不使用它,它就是非公共的,也就是说,只有同一个包中的其他类才能看到它。
一个 nested 类,也就是说,一个类在另一个类中,可以像其他类成员一样,被设置为public、package-private、protected或private。默认的(也就是说,没有修饰符的)是package-private,只对同一个包中的类可见。
编辑:忘记了C++的答案,所以看看(并投赞成票)@zeller的答案。
bd1hkmkf3#
根据JLS § 6.6.1,
如果顶级类或接口类型未声明为public,则只能从声明它的包中访问它。
因此,Java类默认为 * package-private *。
然而,这并不适用于C++。类缺乏可见性--只有它的成员才能拥有访问控制。参见C++11标准§ 11了解成员访问控制的信息。
类的成员可以是
private
;也就是说,它的名称只能由声明它的类的成员和友元使用。protected
;也就是说,它的名字只能被声明它的类的成员和友元、从该类派生的类以及它们的友元使用(参见11.4)。public
;也就是说,它的名称可以在任何地方使用,没有访问限制。unguejic4#
默认情况下,Java类是包私有的。
在C++中,没有像Java那样定义可见性。