java - 多重继承之类的?

标签 java class inheritance design-patterns

我有以下类结构(Blah === ExtBlah):

Base
 +--[ ExtBase ]    --???-- [ ExtBlah ] --- .. more scripts ...
 +--[ Blah ]
        +---[ Script1 ]
        +---[ Script2 ]
        +---[ ....... ]
        +---[ ScriptN ]     

现在我需要编写更多需要扩展 Blah 的脚本,但是 Blah 必须为新的脚本案例扩展“ExtBase”,而不是“Base”。

我仍然必须保持原来的样子,因为 Scripts1-N 必须依赖于“Base”,而不是“ExtBase”。

此外,我不想创建 Blah 的副本,即 ExtBlah,因为这意味着代码重复,并且支持会更加困难和困惑。

有什么想法吗?

最佳答案

正如 Jean-Baptiste 在他的评论中所说,如果你不想重复 Blah 的代码,请将其封装到 ExtBlah 中并调用 Blah 的方法。记得添加一个通用接口(interface)。事实上,接口(interface)试图解决一些多重继承问题。

Base
 +--[ ExtBase ]
 +--[ Blah ] implements BlahInterface
        +---[ Script1 ]
        +---[ Script2 ]
        +---[ ....... ]
        +---[ ScriptN ]   
 +--[ ExtBlah: - private Blah instance] implements BlahInterface
        +---[ ScriptK ]

关于java - 多重继承之类的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39709979/

相关文章:

c# - 如果将类转换为对象,如何获取公共(public)变量值

javascript - 为什么需要设置原型(prototype)构造函数?

c# - 为什么 C# 可以在运行时处理这种明显愚蠢的对象提升?

java - 通过随机访问文件逐行读取文件并从每行获取部分字符串

java - Maven checkstyle 插件给出 "Parameter s should be final."的错误,即使 s 被修改

java - 在 Java 中调用插件类

c++ - 派生类的函数重载

java - 在 Windows 上验证文件名

java - 以较低的特​​异性解析 ISO 日期

c# - 我的类(class)在序列化过程中丢失了方法