java - Java中抽象和多态的优点

标签 java oop interface abstraction

<分区>

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

这些是我的理解:

  1. 抽象是呈现函数签名和隐藏实现的方法,留给可以实现/扩展接口(interface)/抽象类的用户。
  2. 通过这种方式,我们可以实现更大范围的代码修改和可重用性。
  3. 我们可以将实时对象与程序代码中的对象密切相关。

这些是我的问题:

  1. 当所有的方法都抽象后,抽象类可以表现得像接口(interface),为什么我们还需要单独的接口(interface)?请举例说明以便更好地理解。

  2. 我们能否在功能基础上调用抽象类 = 接口(interface) + 继承?因为我们可以和抽象类一起实现接口(interface)和继承的功能。

最佳答案

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

契约(Contract)说明什么,实现说明如何

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

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

关于java - Java中抽象和多态的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29675297/

相关文章:

java - 部分填充数组,删除重复数组

java - 基于字符串的对象创建

c++ - 如果指针设置为 NULL,则任何对它的引用或通过它的引用也不会是 NULL

language-agnostic - 对应的正确 OO 建模

c# - 为什么 C# 编译器不允许接口(interface)中的私有(private)属性 setter ?

java - 使用标记接口(interface)限制泛型参数

java - 捕获java中所有抛出的异常?

Java 抽象类和覆盖变量

c# - 使用泛型类型接口(interface)创建对象实例时出现编译错误

java - Mac Safari 不会运行大小为零的小程序