在Java和C++中,默认情况下是私有或公共类
Is a class private or public by default in Java and C++?
在Java和C++中,类默认是私有的还是公共的?
-
Java:
默认情况下,类的可见性是包专用的,即仅对同一包中的类可见。
-
C++:
该类没有像Java中那样定义可见性。如果您将它们包含在编译单元中,则它们是可见的。
在Java中,顶级类是公共的或非公共的。没有"私人"。您只能使用public关键字或将其关闭。如果将其关闭,则它是非公共的,即仅对同一包中的其他类可见。
嵌套的类,即另一个类中的一个类,可以像任何其他类成员一样设置为公共、包私有、受保护或私有。默认值(即没有修饰符的)是包私有的,仅对同一包中的类可见。
编辑:忘记了C++的答案,所以请参阅(并投票)@zeller的答案。:)
根据§JLS的6.6.1,
如果一个顶级类或接口类型没有被声明为公共的,那么只能从声明它的包中访问它。
因此,Java类在默认情况下是包私有。
然而,这并不适用于C++。类缺乏可见性——只有其成员才能拥有访问控制权。请参阅§11,用于成员访问控制的信息。以下是¶1…
一个类的成员可以是
private
;也就是说,它的名称只能由声明它的类的成员和朋友使用protected
;也就是说,它的名称只能由它所在类的成员和朋友使用声明,由该类派生的类以及它们的朋友声明(见11.4)public
;也就是说,它的名称可以在任何地方使用,而不受访问限制
Java
默认情况下,Java类是包私有的。
C++
在C++中,没有像Java那样定义可见性。
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在没有信号的情况下从C++执行QML插槽
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 为什么在某些情况下不写入此文件?
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 在这种情况下,java对象是否可以调用本机函数
- 在没有引用传递资源的情况下,如何在java中简化这些代码
- 如何在没有System32的情况下解决"java.lang.UnsatisfiedLinkError:找不到依
- 如何在不使用微控制器的情况下使用Java/.NET/C旋转电动机
- 在Java和C++中,默认情况下是私有或公共类
- c++套接字客户端在输出流关闭的情况下不断从Java服务器事件中接收一些内容
- 从C/ c++在内存中写入缓冲区,然后在没有JNI的情况下用java从它中读取
- 在没有指针的情况下,二叉搜索树如何在Java中工作