【问题标题】:Multiple Inheritance of Data Members - Java数据成员的多重继承 - Java
【发布时间】:2013-10-15 22:01:56
【问题描述】:

我试图让一个类从其他超类继承其所有数据成员,但不继承仅与其他类相关的不必要数据成员。

由于我不能从两个类继承,我想我会使用接口。但是,所有接口变量都是公共的、静态的和最终的;本质上是常量而不是实例变量。

有什么办法可以解决这个问题吗?

附加信息:

假设我需要变量 x、y 和 z 存在于 E 类中。

变量 x 将被超类 A 的所有子类使用。 变量 y 将被超类 A 的一些子类使用。 变量 z 也将被超类 A 的一些子类使用。

抽象类 B 继承自抽象类 A。B 包含变量 y。 抽象类 C 继承自抽象类 A。C 包含变量 z。 D类需要变量x和y,它继承自抽象类B,一切都很好。 E 类需要所有变量 x、y 和 z。但它不能从这两个类继承。

如何让 E 类获取所有变量?

【问题讨论】:

  • 显示您想要实现的代码示例
  • 如果类的只有 一些 成员是相关的,那听起来你一开始就遇到了设计问题。
  • 我试图让一个类从其他超类继承其所有数据成员,但不继承仅与其他类相关的不必要数据成员。打破封装和面向对象。
  • 只保护相关数据成员,其余为私有
  • 接口描述的是行为而不是状态。你想要做的是重新设计你的类并在其他拥有它们自己的状态下分开,然后通过组合,然后你注入到你的新类中。

标签: java oop inheritance interface polymorphism


【解决方案1】:

根据您实际尝试执行的操作,您可以使用带有 getter/setter 的多个接口,显然您的实现类仍需要实现所有数据成员。 您还可以保留对一个(或多个)类的引用,这可能是您实际需要的。

虽然我不确定你到底在尝试什么,但通常(或者更像总是)如果你想扩展一个类并且你认为你不需要你扩展的类的一些数据成员,这意味着你做错了什么。

【讨论】:

    【解决方案2】:

    更喜欢组合而不是继承。与其试图拥有一个派生自多个基类的类,不如拥有一个类,该类包含或与这些类的每个对象相关联。

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 2013-12-22
    • 2013-06-14
    • 2018-05-11
    • 2020-08-12
    • 1970-01-01
    • 2010-10-03
    相关资源
    最近更新 更多