关于OOP:Java中抽象和多态的优点

Advantages of Abstraction and Polymorphism in Java

本问题已经有最佳答案,请猛点这里访问。

我正在研究Java中的抽象概念。

以下是我的理解:

  • 抽象是表示函数签名并隐藏实现的方法,将其留给可以实现/扩展接口/抽象类的用户。
  • 这样我们就可以获得更大的范围来减少对代码的修改,提高可用性。
  • 我们可以实时地将对象与程序代码中的对象紧密联系起来。
  • 以下是我的问题:

  • 当一个抽象类可以像一个接口一样工作时,所有的方法都是抽象的,为什么我们需要单独的接口?请举例说明,以便更好地理解。

  • 我们是否可以基于功能调用抽象类=接口+继承?因为我们可以与抽象类一起实现接口和继承的功能。


  • 简单地说:接口是契约,抽象类是骨架实现。(另外,Java接口主要使用,因为它不可能扩展多个类。)

    合同说什么,执行说什么。

    接口示例:java.util.List。它有所有列表应该有的方法:add()size()indexOf()等等。

    抽象类的例子:java.util.AbstractList。虽然它有许多抽象方法,但一些不依赖于元素存储在具体列表中的方式的List方法在那里实现(addAll()equals()toString()等)。要创建完整的实现,并非所有的List方法都应该实现,从而使实现者的工作更容易。