Java中抽象和多态的优点

时间:2015-04-16 12:52:33

标签: java oop interface abstraction

我正在阅读Java中的抽象概念。

这些是我的理解:

  1. 抽象是一种呈现函数签名并隐藏实现的方法,将其留给可以实现/扩展接口/抽象类的用户。
  2. 通过这种方式,我们可以为更少的代码修改,可重用性实现更大的范围。
  3. 我们可以将对象实时与程序代码中的对象紧密关联。
  4. 这些是我的问题:

    1. 当抽象类在所有方法都是抽象的时候可以像界面一样运行时,为什么我们需要单独使用接口?请以一个例子来解释,以便更好地理解。

    2. 我们可以在功能基础上调用 Abstract class = Interface + Inheritance 吗?因为我们可以与Abstract类一起实现接口和继承的功能。

1 个答案:

答案 0 :(得分:2)

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

合同说什么,实现说如何

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

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