当前位置: 首页 > 知识库问答 >
问题:

Java8默认方法接口重写对象等于方法[重复]

孟韬
2023-03-14
public interface Table<T> {

    @Overrride
    default boolean equals(Object other) {
        //do something and return true/false
    }
}

为什么上面的代码有编译错误“java:default method equals in interface Table重写java.lang.Object的一个成员”?难道我们不能使用接口默认方法重写hashCode和equals方法吗?假设我在同一个接口中有方法来确定实现这个接口的对象的相等性?

共有1个答案

印飞捷
2023-03-14

不可以。具有实现的类总是胜过默认方法,因此不能调用默认的hashCodeequals,因此是禁止的。

 类似资料:
  • 这是我的代码: 我知道表示引用,表示包含。 现在为什么<code>a。等于(b)为假? 它们中的每一个都具有相同的值。

  • 主要内容:1 Java8 默认方法的介绍,2 Java8 默认方法的案例1 Java8 默认方法的介绍 Java提供了一种在接口内部创建默认方法的功能。在接口内部定义并带有默认标记的方法称为默认方法。这些方法是非抽象方法。 2 Java8 默认方法的案例 在下面的示例中,Sayable是一个功能接口,其中包含默认值和抽象方法。默认方法的概念用于定义具有默认实现的方法。您还可以覆盖默认方法,以为该方法提供更具体的实现。 输出结果为:  

  • 我试图给出一个完整的答案: "为什么/何时使用抽象类而不是接口。" 并寻找以下方面的验证/建议。 对此的一个答案是, 在具体类来定义特定类型之前,抽象类通常位于继承层次结构中接口的正下方(就像Java API中的许多示例一样),实现并固定接口定义的结构的一些公共方面。 使用抽象类的另一个很好的理由是类型之间有一个清晰的逻辑层次结构。抽象类具有组织层次结构的作用,同时通过作为抽象类而不是具体类,迫使

  • 具有默认方法的接口将被初始化,即使重写了此方法,并且根本没有调用该方法。 示例: 印刷品: 这里到底有什么问题?

  • 抽象方法和默认方法有什么区别? 在从“贵族”那里知道答案之前,我认为默认方法不同于defender方法,默认方法只不过是接口内部的抽象方法(没有关键字abstract)。这两个错误的观念导致这个愚蠢的问题被提出来。我从来不想问一个已经“问得很好,回答得很好”的问题来麻烦大家。 我想删除这个问题,但我没有,因为两个原因-1。stackoverflow阻止了我,2。贵族的回答是出神入化的。

  • 我遇到了这个问题: 下面的输出是什么? 我的想法是: 我的第一直觉告诉我-i=new I(){}?因此,我们不能实例化接口-问题1。 那么我认为公共默认字符串是toString()?重写对象类方法?听起来不太好-问题2 可能的答案: a)10I b) 15I c)由于第11行编译失败 d)由于第15行编译失败 e)由于多个错误导致编译失败 解释完我的想法后,我选择了错误的答案。正确答案是D,我也答