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

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

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

例如:

Abstract Class Animal 

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

现在

  Concrete Class Dog, Cat etc. 

已经提供了这些基本function。

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

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

这不是语言不能没有的东西。 但它非常有用。 当您熟练掌握Java和OO设计时,您会发现它是多么有用。

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

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

例如,

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

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

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

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