0

抽象类可以同时具有抽象方法和非抽象方法。如果无法创建抽象类的新对象,那么在抽象类中使用非抽象方法有什么意义?

我知道您可以覆盖子类中的非抽象方法,然后通过子类的对象使用它。但是,如果您这样做,那么首先需要具有实现的非抽象方法是什么?

4

5 回答 5

1

多思考或多谷歌。

  1. 如果您的子类具有通用功能,那么为什么要在每个类中覆盖该方法?您可以使用基类(在这种情况下是抽象的)方法。需要非抽象(他们通常称为具体)方法。
  2. 虽然在那里有抽象方法(你已经知道我认为),但我们可以根据我们的要求覆盖。
  3. 如果您需要根据每个子类的要求覆盖所有方法,那么您可以选择接口。
于 2013-04-15T06:21:28.523 回答
1

简单的答案:重用和可维护性。

假设有 4 个具体类扩展了您的抽象类,它们都将共享一些行为。

在这种情况下,最好在抽象类中实现该方法,而不是在所有具体类中单独定义它。

于 2013-04-15T06:22:49.337 回答
0

具体的子类可以使用抽象超类中的方法。所以子类之间的所有共享功能都可以进入基础抽象类。

于 2013-04-15T06:20:16.030 回答
0

代码重用。如果您不在继承类中覆盖非抽象方法,则从抽象类继承它们。

于 2013-04-15T06:22:06.653 回答
0

取而代之将它们放在子类中违反了 DRY 原则(不要重复自己):如果所有子类都具有相同的功能,为什么要在每个类中重复编写呢?

于 2013-04-15T06:22:24.573 回答