【问题标题】:multiple inheritance in java : implementing interfacesjava中的多重继承:实现接口
【发布时间】:2014-03-16 19:47:50
【问题描述】:

我有一个实现 Comparator 的类,但我不需要我的类可序列化 我怎样才能实现它们?

public class A implements Comparator<A>
{
}

【问题讨论】:

  • 请改写。你的问题毫无意义。
  • 你想实现 Comparator 和 Serializable 吗?
  • 哦,没关系,我明白了
  • 要扩展所有答案,在 Java 中您只能extend 一个class,但您可以implement 无限接口。

标签: java inheritance multiple-inheritance


【解决方案1】:

Java 没有多重继承是一个常见的误解。它没有状态的多重继承,但它确实具有行为(声明)的多重继承,这是通过接口显示的。所以你可以让一个类实现多个接口:

public class A implements Comparator<A>, Serializable {
}

【讨论】:

  • 不太对。它具有行为声明的多重继承。接口缺乏实现,因此它不是真正的行为多重继承。从本质上讲,它是真正的多重继承和鸭子类型之间的桥梁。
  • 从技术上讲,它仍然(截至 7)没有行为继承,但至少这有点改变。
  • 我猜你们两个在技术上是正确的,至少在 Java 8 出来之前还有几天。我会尝试改写答案。
  • @aruisdante 我根据您的评论更新了答案。 Downvoter:请参阅修改后的答案。
  • @arshajii 你能补充更多关于状态和行为的解释吗,我不明白两者有什么不同?
【解决方案2】:
import java.io.Serializable;
import java.util.Comparator;

public class A implements Comparator<A>, Serializable {

    @Override
    public int compare(A arg0, A arg1) {
        return 0;
    }
}

【讨论】:

    【解决方案3】:

    您可以实现多个接口,只需用逗号分隔它们:

    class A implements Comparator<A>, Serializable {
    }
    

    【讨论】:

      【解决方案4】:

      你可以extend只有一个超类,但你可以implement任意多个接口,例如

      public class A extends B implements Comparator<A>, Serializable {
      }
      

      【讨论】:

        猜你喜欢
        • 2019-03-06
        • 2010-09-27
        • 2011-11-21
        • 2011-10-07
        • 2021-01-29
        • 1970-01-01
        • 2013-10-22
        • 1970-01-01
        • 2013-12-06
        相关资源
        最近更新 更多