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

Java 8中的抽象类和接口有什么区别?

白迪
2023-03-14

据我所知,唯一剩下的区别(除了一些潜在的效率问题之外)是抽象类遵循传统的Java单继承,而接口可以有多继承(或者多实现,如果你愿意的话)。这又引出了另一个问题--

新的Java8接口如何避免菱形问题?

共有1个答案

贺英悟
2023-03-14

接口不能有与其关联的状态。

抽象类可以有与其关联的状态。

此外,不需要实现接口中的默认方法。因此,这样就不会破坏已有的代码,因为接口接收更新时,实现类不需要实现它。
因此,您可能会得到次优代码,但如果您想要更优的代码,那么您的工作就是重写默认实现。

interface A {
    void method();
}

interface B extends A {
    @Override
    default void method() {
        System.out.println("B");
    }
}

interface C extends A { 
    @Override
    default void method() {
        System.out.println("C");
    }
}

interface D extends B, C {

}

接口D继承method()表单类型B和C的无关默认值

修复方法是:

interface D extends B, C {
    @Override
    default void method() {
        B.super.method();
    }
}

如果我想从b继承方法()
如果d也同样适用。

interface Player {

}

interface Team {
    void addPlayer(Player player);
}
 类似资料:
  • (1)接口 接口使用interface修饰; 接口不能实例化; 类可以实现多个接口; ①java8之前,接口中的方法都是抽象方法,省略了public abstract。②java8之后;接口中可以定义静态方法,静态方法必须有方法体,普通方法没有方法体,需要被实现; (2)抽象类 抽象类使用abstract修饰; 抽象类不能被实例化; 抽象类只能单继承; 抽象类中可以包含抽象方法和非抽象方法,非抽象

  • 我发现他们有同样的限制。 正如我所发现的,这两者之间没有明显的区别,因为它们都实施了相同的限制。我唯一注意到的是继承和实现。 类只能扩展到单个基类 一个类可以实现多个接口。

  • 问题内容: 我不清楚两者之间的区别。 谢谢 问题答案: 它们非常相似,但是存在一些重要的技术差异: 抽象类允许您为某些方法提供默认的实现,但是接口不允许您提供任何实现。 您可以实现多个接口,但只能从一个抽象类继承。 这些差异影响应使用两种技术的方式: 您应该使用接口来 定义合同 。 抽象类对于 重用代码 很有 用 ……但是请注意,它不是重用代码的唯一方法。您还应该考虑其他方法,例如遏制。

  • 本文向大家介绍接口和抽象类的区别是什么?相关面试题,主要包含被问及接口和抽象类的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察点:抽象类 Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于: 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。 类可以实现很多个接口,但是只能继承一个抽象类 类可以不实现抽象类和接口声明的所有方法,当然,在这种情

  • 本文向大家介绍抽象类和接口的区别是什么?相关面试题,主要包含被问及抽象类和接口的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。 构造函数:抽象类可以有构造函数;接口不能有。 实现数量:类可以实现很多个接口;但只能继承一个抽象类【java只支持单继承】。 访问修饰符:接口中的方法默认使用 pub

  • 现在接口也有了一些以体作为抽象类的方法,那么java 8中的抽象和接口有什么区别。