【问题标题】:Multiple Inheritance in Java . Assigning priority via extends order [closed]Java中的多重继承。通过扩展订单分配优先级[关闭]
【发布时间】:2020-04-08 05:34:36
【问题描述】:

Oracle Java Tutorials, Multiple Inheritance of State, Implementation, and Type:

Java 编程语言不允许您扩展多个类的一个原因是避免状态的多重继承问题,即从多个类继承字段的能力。例如,假设您能够定义一个扩展多个类的新类。当您通过实例化该类来创建对象时,该对象将从该类的所有超类继承字段。如果来自不同超类的方法或构造函数实例化同一个字段怎么办?

通过为子类扩展的所有类分配优先级,难道不能轻松解决这个问题吗?

class A extends B,C,D
{

}

让我们假设在子类声明中按提到它们的升序分配优先级。

那么 B 的优先级

请指教。提前致谢。

【问题讨论】:

  • 这是关于您正在编写的代码的具体问题,还是关于您想对 Java 语言规范提出建议的一般性对话?
  • @David 它并不特定于任何代码。我只是想知道为什么 java 人以这种方式设计 java。我还想知道我建议的方法涉及哪些并发症。谢谢
  • 恐怕像这样的开放式对话不太适合 Stack Overflow。要了解有关此社区和我们所做工作的更多信息,我们鼓励您从这里开始:stackoverflow.com/tour 有聊天室可供社区贡献者之间进行一般性讨论,这可能适合其中之一。
  • 他们允许类型(接口)、行为(默认方法)的多重继承,但不允许状态。状态的多重继承将the diamond problem 引入到类状态中,这更难以弥补并且更有可能成为问题。 (解决这个行为问题很简单,实现D中的方法)

标签: java multiple-inheritance


【解决方案1】:

是的,粗略地说,这就是 Scala 支持扩展具有多个 Traits

的类的方式

“优先级”是根据linearization equation 确定的,与您提到的类似,因此没有歧义。

【讨论】:

    猜你喜欢
    • 2017-07-10
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多