抽象和摘要在java中

时间:2011-03-26 15:08:14

标签: java abstract-class abstraction abstract

我是一名 java 开发人员,他很好地理解了面向对象的概念(或者,我想像那样)。现在我正在学习设计模式(From Head first design patterns)。 我一直在阅读有关OOPS概念抽象的内容,以便简单地理解它,并且阅读更多有关它的信息让我比以前更加困惑。

据我所知,抽象是指隐藏程序的内部细节,同时将接口暴露给其他程序员,而不必担心内部细节。 但是,我不明白

  1. 抽象类如何适应这种抽象概念,抽象类要求我实现抽象方法,其中是在java中使用抽象类的抽象。
  2. 我觉得,抽象可以实现的一种方式是通过私有构造函数并要求类的用户使用工厂方法来获取可以实现和隐藏实现细节的类的对象。
  3. 请纠正我,如果我在任何地方都错了。

2 个答案:

答案 0 :(得分:8)

“摘要”是“具体”的反义词。通过抽象,您可以表达概念和想法,而不是实现这些想法的具体方式。这符合您对抽象的理解 - 您隐藏了细节,而您只显示了界面。

但这也适用于抽象类 - 它们不具体(它们不能实例化),并且它们不指定实现。它们指定了子类必须处理的抽象概念。

所以它基本上是一个不同的观点 - 一个是从API的客户端的角度来看,另一个是关于子类的。 (请注意,在某些情况下,您可以使用抽象类而不是接口来实现相同的效果,尽管它不被视为良好实践)

答案 1 :(得分:0)

  1. 抽象类定义了类的用户将使用的接口。抽象类类似于接口,除了可以实现某些方法,并且所有抽象类都将由扩展它的具体类实现。 总而言之,优点是您可以拥有完全可互换的同一抽象类的多个实现,因为用户操作的类是抽象类型而不是特定实现类型。

  2. 使用工厂方法是抽象的常用方法,但您也可以使用其构造函数实例化具体类。重要的是必须定义为抽象类型的变量类型。这样做只能使用抽象类定义的接口访问对象变量。