为什么我们需要Java中的抽象类?

时间:2014-02-28 04:08:16

标签: java class abstract-class abstract abstract-methods

为什么我们需要Java中的抽象类?如果你永远不会把它变成一个物体,那为什么要把它放在一起呢?你如何使用它?为什么会这样?我用抽象方法想知道同样的事情。我发现这似乎是一个类似的概念,即拥有一个没有子类的超类,这可能无关紧要。

3 个答案:

答案 0 :(得分:30)

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

例如:

Abstract Class Animal 

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

现在

 Concrete Class Dog, Cat etc.

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

答案 1 :(得分:14)

抽象类允许在类中提供部分方法的默认实现集。由于它们不完整,因此无法按原样实例化和使用它们,但它们可以通过子类化以特定于特定实现的方式添加缺失的详细信息,并且可以实例化这些子类。

如果没有抽象类,您将不得不提供您想要覆盖的方法的虚拟实现......这可以完成,但是存在忘记实现其中一个的风险。让一些方法保持完全抽象可以确保真正的实现必须填补空白,或者继续自己抽象,并迫使他们的后代这样做。

这不是语言不能没有的东西。但它非常有用。随着您对Java和OO设计的熟练程度的提高,您将发现它是多么有用。

(请注意,基本上,我们在上次提出这个问题时说过同样的事情。所以,如果你仍然感到困惑,你可能想要更准确地说明究竟是什么让你感到困惑。)

答案 2 :(得分:12)

抽象clase的使用很多,抽象类的主要目的是作为基类运行,可以通过子类扩展它们来创建完整的实现。

例如,

您可以在程序中实施三个步骤,

  • 行动前的几个步骤
  • 要执行的某些操作
  • 行动后的几个步骤

因此,在这种情况下,您可以使用以下三种方法定义抽象类:

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