java - 将我的 C++ 代码转换为 Java : Translating multiple inheritance

标签 java c++ oop inheritance

<分区>

第一天使用 Java。非常基本的问题:我有三个基类,由许多类多重继承。这些基类中的每一个都有很多实现和很少的抽象方法:

class Consumer { /* lots of stuff */ };
class Producer { /* lots of stuff */ };
class Logger { /* lots of stuff */ };

class A : public Consumer, Producer, Logger {}
...
class Z : public Consumer, Producer, Logger {}

现在我知道我可以将三个基类中的两个转换为接口(interface)并多重继承这两个接口(interface)并扩展一个类。不充分,因为这些基类中的所有实现都没有意义复制到许多子类中。

我正在阅读一些关于委托(delegate)或组合的资料,但我不知道如何在这里应用它。基本上我的思维过程已经被我的 C++ 经验所塑造。 将我的 C++ 类结构转换为 Java 的阻力最小的途径是什么?

如果需要,我可以填写更多基类,但希望没有必要。

最佳答案

What is the path of least resistance to convert my C++ class structure to Java?

拿起笔和纸,重新思考您的问题并做出更接近 Java 工作方式的设计。

没有神奇的规则可以将任何给定的多重继承问题转化为另一个没有多重继承的问题。鉴于这种情况,您可能希望通过创建多个相互引用的类来分离关注点,而在 C++ 中只有一个类……但这取决于您要处理的具体问题,如何构建层次结构类和接口(interface)的类型以及生成的不同类实例如何相互关联。

关于java - 将我的 C++ 代码转换为 Java : Translating multiple inheritance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23575158/

相关文章:

java - 无法读取架构文档 'http ://www. springframework.org/schema/beans/spring-beans.xsd

java - j2objc直接引用无法解析(用Maven结构/src/main/java)

c++ - 如何将 char 添加到 istringstream?

c++ - "Expression must have class type"使用未记录的库函数

c++ - 为有条件编译的产品实现工厂模式

Java 泛型和扩展的比较

java - SQL Server 独占行锁 (XLOCK ROWLOCK) 使用 Spring Transactions 使用 Hibernate

c++ - clang 6 不支持 unordered_map::merge?

c++ - WinCE 6.0 : Customizing Control Panel (cplmain)

c++ - 如果一个类可以被继承,那么每个函数都应该是虚拟的吗?