私は抽象クラスとインターフェースについて知っていて読んだことがありますが、インスタンス化できないクラスの使用法は何なのかということを理解していませんでした。抽象クラスの代わりに、通常のクラスと仮想メソッドを使用できますか? 基本クラスをインスタンス化するとどうなりますか?
4 に答える
抽象化とインターフェースにより、いくつかの共通ロジックを共有できますが、それらのいずれも直接インスタンス化することはできません
cdhowie の回答に追加するには、インターフェイスと抽象クラスの最も関連性の高い違いは次のとおりです。
抽象クラスから継承すると、子クラスが階層のチェーンで妥協されます。それを実装するインターフェイスの異なるクラスでは、互いに完全に緩んでいます。
抽象クラスを使用すると、ロジックを持つメソッドまたはプロパティを持つことができます。つまり、一部のコード自体が抽象クラスに実装されます。インターフェイスにはコードやロジックがないため、実装者はすべてのロジックを書く必要があります
抽象クラスとインターフェイス クラスは、コンパイル時のルールと設計を支援する実行時のルールを提供する言語機能です。これまでのところ、抽象クラスまたはインターフェイス クラスのインスタンス化は、コンパイラを使用して確実に行うことはできません。C++ のアセンブリ言語を使用してプログラミングしたり、C# や Java の中間言語コード/バイト コードを使用したりする場合は、それらもインスタンス化できる可能性があります。 、この点についてはよくわかりません。実行時には、抽象クラスとインターフェイス クラスの両方に型オブジェクトが存在するためです。
抽象クラスは非常に便利で、デザインがすべてです。たとえば、'Draw' や 'Move' などの機能を持つ Shape という抽象基本クラスがあるとします。次に、Shape クラスを継承して「Circle」クラスと「Square」クラスを作成します。
継承されたクラスには、両方とも関数 Draw と Move があります。Move には、子クラスが使用する基本クラスの機能がありますが、描画機能は各子によって処理されます。
その後、円と正方形をインスタンス化しますが、「形状」オブジェクトだけでは意味がありません。
それが役立つことを願っています。