【问题标题】:Is a class private or public by default in Java and C++?默认情况下,Java 和 C++ 中的类是私有的还是公有的?
【发布时间】:2012-09-02 10:35:59
【问题描述】:

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

【问题讨论】:

    标签: java c++ class-visibility


    【解决方案1】:
    • Java

      默认情况下,类的可见性是包私有的,即仅对同一包中的类可见。

    • C++

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

    【讨论】:

    【解决方案2】:

    在 Java 中,顶级 类要么是公共的,要么是非公共的。没有“私人”。您只能使用 public 关键字或将其关闭。如果您将其关闭,则它是非公开的,即仅对同一包中的其他类可见。

    嵌套类,即另一个类中的一个类,可以像任何其他类成员一样设为公共、包私有、保护或私有。默认值(即没有修饰符的那个)是包私有的,仅对同一包中的类可见。

    编辑:忘记了 C++ 答案,所以请参阅(并支持)@zeller 的答案。 :)

    【讨论】:

    • 感谢您的评论,但您发送的链接谈到了类成员的访问修饰符,而不是类本身。顶级课程不能标记为私有。
    【解决方案3】:

    根据§6.6.1 of the JLS

    如果顶级类或接口类型未声明为公共的,则只能从声明它的包内访问它。

    所以,Java 类默认是 package-private

    但是,这不适用于 C++。一个类缺乏可见性——只有它的成员才能拥有访问控制。有关成员访问控制的信息,请参阅 C++11 标准的第 11 节。这是 ¶1...

    的摘录

    一个类的成员可以是

    • private;也就是说,它的名称只能被声明它的类的成员和朋友使用。
    • protected;也就是说,它的名字只能被它所在班级的成员和朋友使用 由派生自该类的类及其朋友声明(参见 11.4)。
    • public;也就是说,它的名称可以在任何地方使用而不受访问限制。

    【讨论】:

    • +1。此外,在 C++ 类中,默认成员访问权限是 private,而对于 struct,它是公共的。
    猜你喜欢
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 2011-06-07
    • 2016-06-01
    相关资源
    最近更新 更多