C# を参照すると、抽象メソッドを含まない抽象クラスを定義することができます。では、クラスを ABSTRACT として定義する用途は何ですか?
9 に答える
プロパティを持つabstract
クラスを使用して、継承の基本クラスを表すことができます。抽象クラスはインスタンス化できません。他の人に基本クラスのオブジェクトを作成させたくないので、これはうまくいくかもしれません。
抽象クラスを定義して、オブジェクトの抽象的な性質を定義できます。例: 動物には目があります。Dog は Animal から継承できるため、Eye を持つことができます。Dog オブジェクトを作成できます。しかし、Animal オブジェクトは作成したくありません。
msdnから、
抽象クラスの目的は、複数の派生クラスが共有できる基本クラスの共通定義を提供することです。たとえば、クラス ライブラリは、その関数の多くのパラメーターとして使用される抽象クラスを定義し、そのライブラリを使用するプログラマーが派生クラスを作成してクラスの独自の実装を提供することを要求する場合があります。
基本的に、経験則として、インスタンス化するために継承する必要がある場合は、クラスを常に抽象的に定義する必要があることを使用します。抽象クラス自体はできないからです。
例えば。抽象的であるBuildingクラスがあるとします。次に、銀行や家などの派生クラスを介してインスタンス化する必要があります。Buildingクラスに抽象メソッドがないという事実は、抽象であるかどうかとは関係ありません。
C#を参考に、抽象メソッドを含まない抽象クラスを定義可能
そのとおり
次に、クラスを ABSTRACT として定義することの使用は何ですか?
ほとんどの場合、クラスを派生させる必要があるという事実を伝えます。コンストラクターを保護することで、同様の効果が得られます。クラスから継承せずにクラスのインスタンスを作成することはできません。
クラスを抽象として定義すると、クラスが直接インスタンス化されなくなります。
簡単なルールは、この特定のクラスが単独では意味をなさないと感じるときはいつでも、抽象クラスを作成することです(抽象メソッドが含まれているかどうかに関係なく)...
したがって、次の場合は抽象クラスを使用します
- 抽象クラスのオブジェクトのインスタンス化は、その目的には一般的すぎるため許可しません
- 同時に、他のクラスに継承できるメソッドの具体的な実装を提供できます。これは、設計した階層構造にとって実り多いものです。
クラスabstract
を定義して、抽象メンバーを定義する可能性を保持します。
それを避けることができるのは事実ですが、その場合は意味が少なくなります。
このような他の質問を行うことができます:
virtual
誰もオーバーライドしないのに、なぜ関数を定義できるのでしょうか。?
これらは確かに異なる概念ですが、質問をするという考え方は同じです。
お役に立てれば。
クラスを抽象として定義し、その中にメソッドを持たないこともできます...ただし、他のクラスにのみ継承でき、独自にインスタンス化できないため、何もできません。
- 抽象クラスのインスタンスは作成できません。
- abstract キーワードを使用すると、不完全で派生クラスに実装する必要があるクラスおよびクラス メンバーを作成できます。
- 抽象クラスの目的は、複数の派生クラスが共有できる基本クラスの共通定義を提供することです。
抽象クラスには、通常のメソッド (具象メソッド) だけでなく抽象メソッドも含めることができます。
抽象クラスの目的は、他のクラスに継承できる基本クラスとして使用することです。これを行う利点は、同じメソッドを再度書き直さなくても、複数の子クラスが基本クラス (抽象クラス) 内のメソッドを利用できることです。