gpt4 book ai didi

java - 如果消除了对多重继承的限制,那么 Java 中的接口(interface)和抽象类有什么区别?

转载 作者:行者123 更新时间:2023-12-01 17:31:20 25 4
gpt4 key购买 nike

我知道询问java中接口(interface)和抽象类之间的区别是一个非常基本、经典和简单的问题。但这个问题有点不同。

我知道Java不支持从多个类继承以避免菱形继承(钻石问题),因此提出了接口(interface)的概念作为促进多重继承的替代方法。但是,这是接口(interface)存在的唯一原因吗?

假设出于某种原因,Java Guys 在其新版本之一中决定克服这一限制并允许从多个类继承,那么,抽象类和接口(interface)之间有什么区别呢?它们只是同义词吗?这些接口(interface)仍然有存在的理由还是只是多余的?

最佳答案

如果一个类只有一个抽象方法,那么它就是“抽象”的;其他方法可以在抽象类中实现。接口(interface)做不到这一点;它们纯粹是抽象的。

public interface Iface {
void foo() {
System.out.println("Foo");
}
}
$ javac Iface.java Iface.java:2: interface methods cannot have body    void foo() {               ^1 error

但是,如果您谈论的是一个完全抽象类(其中所有方法都是抽象的),那么如果您假定多重继承,我不会立即看到任何真正的剩余差异,不是。

<小时/>

回复您对上述问题的评论:

But rather trying to understand that had Java allowed inheriting from multiple classes, would it have had interfaces as entities in its language specification.

如果 Java 从第一天起就有多重继承,很可能不会,因为抽象类就可以完成这项工作。

关于java - 如果消除了对多重继承的限制,那么 Java 中的接口(interface)和抽象类有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10579896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com