Java抽象类和接口

Java抽象类和接口,java,class,interface,abstract-class,Java,Class,Interface,Abstract Class,在采访中,我被问到以下问题。我试图回答这个问题,但我想得到这个问题的确切答案 若我可以模拟抽象类作为接口,为什么java提供了接口 这意味着,若在抽象类中,我可以将所有方法标记为抽象,那个么抽象类将作为接口工作,那个么为什么我需要接口呢 谁能简要地给我解释一下吗 这是一个非常标准的面试问题。答案是:因为您可以实现多个接口,但不能扩展多个抽象类 JRE中的示例:LinkedList既是一个列表又是一个Deque。这些接口定义了类的行为。它们没有提供任何实施细节。而抽象类可以提供一些 相关问题:和。

在采访中,我被问到以下问题。我试图回答这个问题,但我想得到这个问题的确切答案

若我可以模拟抽象类作为接口,为什么java提供了接口

这意味着,若在抽象类中,我可以将所有方法标记为抽象,那个么抽象类将作为接口工作,那个么为什么我需要接口呢


谁能简要地给我解释一下吗

这是一个非常标准的面试问题。答案是:因为您可以实现多个接口,但不能扩展多个抽象类

JRE中的示例:
LinkedList
既是一个
列表
又是一个
Deque
。这些接口定义了类的行为。它们没有提供任何实施细节。而抽象类可以提供一些


相关问题:和。后者不是直接相关的,但它说明了为什么需要接口,即使在抽象类就足够的情况下也是如此。

接口定义契约&可以定义常量,但不提供所有契约方法的实现

抽象类可以提供方法和成员变量的实现——如果您愿意,您可以创建一个抽象类,该类定义除了在具体子类中所需的微调之外的所有内容。您不能对接口执行此操作,但可以实现多个接口&只扩展一个父类


接口和抽象类都可以用于多态地使用具体类

面试官之所以问这个问题,是因为你的回答反映了你对编程语言(和编译器)的深刻理解。特别是,Java在(纯)抽象类之上定义了接口的概念,以便(部分)支持(接口之间)多重继承。如果没有引入这个机制,我们就没有办法实现某种多重继承,或者C++中完全成熟的多重继承所造成的巨大混乱。 1) java中的多重继承是通过接口实现的

2) 如果有一种情况需要对一个方法进行一些解释,但不是完整的解释,那么最好的方法就是使用抽象类


3) 接口仅仅为返回类型和参数类型提供了一个协议。

抽象类可以很好地设置默认方法和层次结构。问题是子类只能一次性扩展一个超类。另一方面,接口可以相互扩展多次,子类可以实现任意数量的接口。这提供了很大的灵活性,并提供了改变的潜力。理想情况下,可以结合使用,即抽象类实现interface1…interface2,这两个方面都是最好的