JavaとC#のインターフェイスと抽象クラスの違い
この投稿では、JavaとC#の抽象クラスとインターフェイスの違いを理解します。
抽象クラス
-
宣言と定義の部分が含まれています。
-
抽象クラスを使用して多重継承を実装することはできません。
-
コンストラクターが含まれています。
-
静的メンバーを含めることもできます。
-
public、private、protectedなどの複数のタイプのアクセス修飾子を含めることができます。
-
抽象クラスのパフォーマンスは速いのでとても良いです。
-
これは、クラスのコアID/機能を実装するために使用されます。
-
クラスは1つの抽象クラスのみを使用できます。
-
多くの実装が同じであり、それらが共通の動作をしている場合は、抽象クラスを使用することをお勧めします。
-
抽象クラスには、メソッド、フィールド、定数が含まれています。
-
完全に実装することも、部分的に実装することも、実装しないこともできます。
インターフェース
-
宣言部分のみが含まれています。
-
インターフェースを使用して多重継承を実現できます。
-
コンストラクターは含まれていません。
-
静的メンバーは含まれていません。
-
インターフェイス内のすべてがパブリックと見なされるため、パブリックアクセス修飾子が含まれています。
-
インターフェースのパフォーマンスは良くありません。
-
それぞれのクラスで実際のメソッドを検索するのに時間がかかるため、時間がかかります。
-
クラスの周辺機能を実装するために使用されます。
-
複数のインターフェースを使用できます。
-
複数の実装がメソッドを共有している場合は、「インターフェース」を使用できます。
-
インターフェイスにはメソッドのみを含めることができます。
-
完全に実装する必要があります。
-
抽象クラスを使用する場合とJavaでインターフェイスを使用する場合
インターフェイスはコントラクトの動作を定義するために使用でき、2つのシステム間のコントラクトとして機能して相互作用することもできますが、抽象クラスは主にサブクラスのデフォルトの動作を定義するために使用されます。つまり、すべての子クラスが同じ機能を実行する必要があります。 抽象クラスを使用する場合 抽象クラスは、派生クラスに共通の基本クラスの実装を提供するため、継承の概念を使用している場合に適しています。 非公開メンバーを宣言する場合は、抽象クラスも適しています。インターフェイスでは、すべてのメソッドがパブリックである必要があります。 将来、新しいメソッドを追加したい場合は、抽象クラスの方が
-
抽象クラスとインターフェースの違い
抽象クラスは、デフォルトの動作を実装するインスタンスメソッドを持つことができます。インターフェイスは定数とインスタンスメソッドのみを宣言できますが、デフォルトの動作を実装することはできず、すべてのメソッドは暗黙的に抽象化されています。インターフェースにはすべてのパブリックメンバーがあり、実装はありません。