抽象クラスとインターフェイスは、抽象化を達成し、優れたデザインの原則を促進するための強力なツールです。すべての実装の詳細を指定せずに、関連するクラスのグループの共通の青写真を定義することができます。それぞれの使用方法を分解しましょう:
抽象クラス:
Cでは、抽象クラスがabstract
キーワードを使用して宣言されます(または少なくとも1つの純粋な仮想関数を持つことによって)。純粋な仮想関数は、署名で宣言されますが、実装はありません(例: virtual void myFunction() = 0;
)。抽象クラスを直接インスタンス化することはできません。仮想関数に具体的な実装を提供する他のクラスの基本クラスとして機能します。
<code class="c ">#include <iostream> class Shape { public: virtual double getArea() = 0; // Pure virtual function, making Shape abstract virtual void draw() = 0; // Another pure virtual function virtual ~Shape() = default; // Virtual destructor is crucial for proper cleanup of polymorphic objects }; class Circle : public Shape { private: double radius; public: Circle(double r) : radius(r) {} double getArea() override { return 3.14159 * radius * radius; } void draw() override { std::cout </iostream></code>
インターフェイス(純粋な抽象クラスを使用):
Cは、JavaやC#と同じ方法でインターフェイスを持っていません。代わりに、純粋な抽象クラス(純粋な仮想関数のみを持つクラス)を使用して、同様の機能を達成します。これらは、派生したクラスが実装する必要がある契約を実施します。
<code class="c ">#include <iostream> class Drawable { public: virtual void draw() = 0; virtual ~Drawable() = default; }; class Printable { public: virtual void print() = 0; virtual ~Printable() = default; }; class MyObject : public Drawable, public Printable { public: void draw() override { std::cout </iostream></code>
重要な違いは、意図と能力にあります。
選択は、設計の目標に依存します。
抽象クラスを選択してください。
インターフェイス(純粋な抽象クラス)を選択します。
抽象クラスとインターフェイスは、コードの維持可能性と再利用性を大幅に改善します。
抽象クラスとインターフェイス(純粋な抽象クラス)を慎重に選択し、それらを一貫して適用することにより、堅牢で保守可能な、再利用可能なCコードを作成できます。仮想デストラクタは、多型オブジェクトを削除するときにメモリリークを避けるために抽象クラスで重要であることを忘れないでください。
以上が設計と抽象化のために、Cの抽象クラスとインターフェイスを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。