事实上,你错过了一些东西:
通常情况下,您不必仅仅因为可以使用一个特性就必须使用该特性。尤其要小心多重继承。它能让事情很快变得复杂。
现在接口也有了一些以体作为抽象类的方法,那么java 8中的抽象和接口有什么区别。
我发现他们有同样的限制。 正如我所发现的,这两者之间没有明显的区别,因为它们都实施了相同的限制。我唯一注意到的是继承和实现。 类只能扩展到单个基类 一个类可以实现多个接口。
据我所知,唯一剩下的区别(除了一些潜在的效率问题之外)是抽象类遵循传统的Java单继承,而接口可以有多继承(或者多实现,如果你愿意的话)。这又引出了另一个问题-- 新的Java8接口如何避免菱形问题?
现在,我们知道Java 8在接口中引入了默认和静态方法。 接口最初在Java中引入是为了避免C++中出现的菱形问题,在多重继承中。 但是,随着Java8在接口中引入默认方法,现在,Java也引入了菱形问题,它在以前的版本中避免了这个问题。 默认方法不是必须重写的。 但是当使用接口发生菱形问题时,实现这些接口的类必须重写默认方法。 null PS我在互联网上没有找到任何关于这方面的好文章的链接。 他
(1)接口 接口使用interface修饰; 接口不能实例化; 类可以实现多个接口; ①java8之前,接口中的方法都是抽象方法,省略了public abstract。②java8之后;接口中可以定义静态方法,静态方法必须有方法体,普通方法没有方法体,需要被实现; (2)抽象类 抽象类使用abstract修饰; 抽象类不能被实例化; 抽象类只能单继承; 抽象类中可以包含抽象方法和非抽象方法,非抽象
问题内容: 为什么要创建抽象或接口类,或者何时应使用抽象或接口类? 问题答案: 仅在声明类必须具有的方法和成员时,才使用接口。实现该接口的任何人都必须声明和实现该接口列出的方法。 如果你还想拥有默认实现,请使用抽象类。扩展抽象类的任何类都必须仅实现其抽象方法和成员,并且将具有抽象类其他方法的一些默认实现,你可以覆盖或不重写。 -编辑-忘了提,Earwicker提醒我 最后,你可以根据需要实现任意数