抽象クラスと通常のクラスを使用する利点 質問する

抽象クラスと通常のクラスを使用する利点 質問する

コードの量ではなく質に重点を置いた小規模なコーディング プロジェクトを自分で開始することにしたのですが、抽象クラスの使用について質問があります。

抽象クラスとインターフェースの違いはわかりましたが、最大の違いは (私が思うに)、インターフェースでは、インターフェースを使用するクラスで実装する必要のあるメソッドのみを定義でき、抽象クラスでは、必要に応じてメソッドとメンバーの両方を定義でき、デフォルトのメソッド実装も定義できるということです。私の質問は、抽象クラスと通常のクラスを使用する主な利点は何ですか? 私が考えられる唯一の違いは、抽象クラスのインスタンスを作成できないことです。 他にこの 2 つの違いはありますか?

ベストアンサー1

厳密に言えば、デザインの観点から言えば、物事を単純化することが最善です。物事を単純化する最良の方法は、単純なアナロジーを使うことだと私は信じています。鳥の例えを使ってみましょう...

インターフェース: 定義する必要のある特定の関数を強制する場合に使用します。たとえば、IBird には ScreamLikeABird と Fly (インターフェース関数) のコントラクトがあります。ただし、より具体的に、Run コントラクトを持つ IOstrich を持つこともできます。また、Attack コントラクトを持つ IHawk などもあります。

要約: 基本関数を強制し、基本プロパティを持たせたい場合に使用します。たとえば、Avian は鳥の基本クラスで、LayEgg という関数と Age、Species、NumberOfChicks などのプロパティを持つことができます。すべての鳥は卵を産むので、これらのことは鳥の行動を変えませんし、変えてはなりません。しかし、すべての鳥が鳴くとき同じ音を立てるわけではなく、同じように飛ぶわけでもありません (中には飛ばない鳥もいます)。そのため、これらはインターフェイスを介して実装する必要があります。

おすすめ記事