0

抽象クラスは、抽象メソッドと非抽象メソッドの両方を持つことができます。抽象クラスの新しいオブジェクトを作成できない場合、抽象クラスに非抽象メソッドを持つことのポイントは何ですか?

子クラスの非抽象メソッドをオーバーライドして、子クラスのオブジェクトを介して使用できることを知っています。しかし、それを行っている場合、そもそも非抽象メソッドを実装で使用する必要があるのは何ですか?

4

5 に答える 5

1

もっと考えるか、もっとググってください。

  1. 子クラスに共通の機能がある場合、なぜすべてのクラスでメソッドをオーバーライドするのでしょうか? 基本クラス(この場合は抽象)メソッドを使用できます。非抽象(主に呼び出される具体的な)メソッドが必要になります。
  2. そこに抽象メソッドがありますが(すでにご存知のとおり)、要件に応じてオーバーライドできます。
  3. 要件に応じてすべての子クラスですべてのメソッドをオーバーライドする必要がある場合は、Interface.
于 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 に答える