为什么我们需要 Java 中的抽象类?如果你永远不会把它变成一个对象,为什么首先要有它?你如何使用它?为什么会在那里?我想知道与抽象方法相同的事情。我发现这似乎是一个类似于拥有一个没有子类的超类的概念,这些子类可能很重要。
问问题
51038 次
3 回答
30
抽象类可以用作其他类的模板类型。抽象类将拥有所有扩展它的类的通用功能。
例如:
Abstract Class Animal
所有的动物都会移动、呼吸和繁殖,因此可以将它们归入动物类。
现在
Concrete Class Dog, Cat etc.
已经提供了这些基本功能。
于 2014-02-28T04:13:15.640 回答
18
抽象类允许提供类中方法的部分默认实现。由于它们不完整,因此它们不能被实例化和按原样使用,但它们可以被子类化以特定于特定实现的方式添加缺失的细节,并且可以实例化这些子类。
如果没有抽象类,您将不得不提供您打算覆盖的方法的虚拟实现......这可以完成,但是会有忘记实现其中一个的风险。让一些方法保持完全抽象可确保真正的实现必须填补空白,或者继续抽象自身并迫使其后代这样做。
这不是语言不能没有的东西。但它非常有用。随着您越来越精通 Java 和 OO 设计,您会发现它的用处。
(请注意,基本上,上次您提出这个问题时,我们说了同样的话。因此,如果您仍然感到困惑,您可能想更具体地了解究竟是什么让您感到困惑。)
于 2014-02-28T04:13:33.970 回答
13
抽象类有很多用途,抽象类的主要目的是充当基类,可以通过子类扩展以创建完整的实现。
例如,
您可能需要在程序中实施三个步骤,
- 行动前几步
- 一些要执行的动作
- 动作后几步
因此,在这种情况下,您可以使用以下三个方法定义一个抽象类:
public abstract MyAbstractProcess {
public void stepBefore() {
//implementation directly in abstract superclass
}
public abstract void action(); // implemented by subclasses
public void stepAfter() {
//implementation directly in abstract superclass
}
}
另外,上面抽象类Animal的例子也是一个很好的例子。
于 2014-02-28T04:31:26.437 回答