为什么我们在Java中需要抽象类? [已关闭]

问题描述 投票:0回答:3

Java中为什么需要抽象类?如果你永远不会把它变成一个物体,为什么首先要拥有它呢?你如何使用它?为什么会在那里?

我对抽象方法也有同样的疑问。我发现这似乎与拥有一个没有任何子类的超类类似,而这些子类可能很重要。

java class abstract-class abstract abstract-methods
3个回答
36
投票

抽象类可以用作其他类的模板类型。抽象类将为扩展它的所有类保留通用功能。

例如:

Abstract Class Animal 

所有动物都会移动、呼吸和繁殖,因此这些都可以放入动物类中。

现在

 Concrete Class Dog, Cat etc.

已经提供了这些基本功能。


25
投票

抽象类允许在类中提供一组部分方法的默认实现。由于它们不完整,因此无法按原样实例化和使用它们,但可以对它们进行子类化,以特定于特定实现的方式添加缺少的细节,并且可以实例化这些子类。

如果没有抽象类,您将不得不提供您打算重写的方法的虚拟实现……这是可以做到的,但这样就会存在忘记实现其中之一的风险。让某些方法保持完全抽象可确保真正的实现必须填补空白,或者继续本身抽象并迫使其后代这样做。

这并不是语言离不开的东西。但它非常有用。当您更加精通 Java 和 OO 设计时,您会发现它有多么有用。


15
投票

抽象类有很多用途。抽象类的主要目的是充当基类,可以通过子类扩展以创建完整的实现。

例如,您的程序中可能需要执行三个步骤:

  • 行动前的几步
  • 需要执行的一些操作
  • 行动后几步

所以在这种情况下,你可以用这样的三个方法定义一个抽象类:

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的例子也是一个非常好的例子。

© www.soinside.com 2019 - 2024. All rights reserved.