Java中抽象和多态的优势

6
我正在学习Java中的抽象概念。
以下是我的理解:
1. 抽象是一种方法,可以呈现函数的签名并隐藏实现方式,使用户能够实现/扩展接口/抽象类。 2. 通过这种方式,我们可以在不修改代码的情况下获得更大的范围和可重用性。 3. 我们可以将程序代码中的对象与现实世界中的对象紧密联系起来。
以下是我的问题:
1. 当一个抽象类的所有方法都变成抽象方法时,为什么我们还需要单独的接口?请给出一个例子以便更好地理解。 2. 在功能上,我们是否可以将抽象类视为“接口+继承”的组合?因为我们可以通过抽象类同时实现接口和继承的功能。

这个问题应该能回答你的疑问:https://dev59.com/aXI-5IYBdhLWcg3wVWpi - Leandro Carracedo
以下是关于为什么Java不允许多重实现继承的答案:https://dev59.com/bHNA5IYBdhLWcg3wWseK - jmrah
1个回答

2
简单来说:接口是一个合同,抽象类是骨架实现。(此外,在Java中,接口大多数被使用,因为无法扩展多个类。)
合同说明了“什么”,实现说明了“如何”。
接口的例子:java.util.List。它具有任何列表都应该具有的所有方法:add()、size()、indexOf()等。
抽象类的例子:java.util.AbstractList。虽然它有许多抽象方法,但一些不依赖于元素在具体列表中存储方式的List方法在其中得到了实现(addAll()、equals()、toString()等)。为了创建完整的实现,不需要实现所有的List方法,从而使实现者的工作更加容易。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接