Java中的私有扩展
Private extend in Java
在C++中,我们可以将基类私有地扩展(派生)到子类:
class Base
{
// ....
};
class Child : private Base
{
// ....
};
Java对应的语法是什么如果Java没有,Java程序员该怎么办?
Java的继承语法:
class Base {}
class Child extends Base
{
// ...
}
Java中没有私有继承。Java只有公共继承。也就是说,您既继承了实现又继承了接口。
使用私有继承,您将只继承实现。据我记忆所及,它基本上是一种更静态的构图形式。
在大多数情况下,你可以使用合成来做同样的事情。
public class Child{
private Base base;
public Child(...){
base = new Base(...);
}
}
在某种程度上,您可以使用私有内部类来实现类似的效果:
public class Base {
private int privateMember = 10;
private class Child extends Base {
public Child() {
System.out.println("I can see your privates: " + privateMember);
}
}
public static void main(String[] args) throws Exception {
Base t = new Base();
Child c = t.new Child();
}
}
运行上述代码时,控制台上会打印以下消息:
I can see your privates: 10
Java没有任何等价的东西。
在C++中,私有继承实际上意味着:是根据实现的
也就是说,这是一种实现技术,当你有两个类没有is-a关系,但需要访问受保护的成员或必须重新定义其虚拟函数时使用。
因此,根据这个定义,您可以在Java中通过简单地扩展类或使用组合来实现这一点。
private的语法不可用,但您可以获得相同的结果
相关文章:
- 是否可以通过C++扩展强制多个python进程共享同一内存
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 扩展光电二极管探测器以支持多个传感器
- 在java中解决这段代码时面临循环中的问题
- 尝试用java代码编译和运行c++代码
- 在这种情况下,java对象是否可以调用本机函数
- C++中的VLA,扩展名为std=C++11
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 在java中读取c++字节的位字段
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- C++返回 Numpy 数组的 Python 扩展模块
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 扩展可变参数模板中的变量名称
- 使用已使用 java 编码的 openssl 解码数据
- 有没有等效的Java <? 扩展 ClassName> 在C++?
- 继承Java集合接口(Set、Map、List等)的C++等价物是什么?或者扩展AbstractCollection
- Java中的私有扩展
- c++服务提供者如何扩展Java应用程序
- 通过JNI将我的Java API扩展到c++:如何包装返回String的方法