C#では、インターフェイスをいつ使うべきですか、いつ抽象クラスを使うべきですか?決定要因は何ですか?インタフェースと抽象クラス
答えて
抽象クラスの利点は以下のとおりです。メソッド
- 能力は機能
- に不変のチェックを追加しました「インターフェース」メソッドが と呼ばれる方法で、もう少しコントロールを持っています
- "無料"のインタフェースに関連する、または関係のない動作を提供する能力
インタフェースは単にデータ受け渡し契約に過ぎず、これらの機能はありません。しかし、型は1つのクラスからのみ派生することができますが、任意の数のインタフェースを実装することができるため、通常は柔軟性があります。
@JaredPar:重複した質問に答えることを妨げることになると思います。(btw、私はあなたを落胆させた人ではありません) – Brann
@Brann、私は残念ながらその行動を以前に見ました。 OPに投票しても意味がないようです。詐欺師を探すのは彼らの責任です。 – JaredPar
私はこの答えに非常に多くのアップフォースがあり、受け入れられた答えであることに驚いています。回答者の偏見(「抽象クラスの利点」とそれに続く4つの利点の後に「インタフェースは単なる」であり、それに続いてインタフェースを優先する単一の「しかし」が続く)を抽象クラスに示すように思われる抽象クラスとインタフェース。私は回答者を攻撃することを意味していませんが、確かにこの質問は、質問に対する最善の正義を行うより客観的な方法で述べるべきです。 – Matt
実際の質問は、インターフェイスまたはベースクラスを使用するかどうかです。これは前に説明しました。
C#では、抽象クラス(キーワード "abstract"でマークされたもの)は、単にオブジェクトをインスタンス化できないクラスです。これは、単純に基本クラスとインタフェースを区別するのとは異なる目的を果たします。
要約クラスとインタフェースは意味的に異なるが、その使用法は重複する可能性がある。
抽象クラスは、一般的に、同様のクラスの構築基礎として使用されます。クラスに共通する実装は、抽象クラスに含まれることができます。
インターフェイスは、一般的に、クラスの能力を指定するために使用されます。クラスの似たものは必要ありません。
複数の継承がないため、クラスをインターフェイス/抽象クラスから継承/継承でき、別の基本クラスから継承できるようにするには、インターフェイスを使用する必要があります。
- 1. インタフェースと抽象クラス?
- 2. インタフェースと抽象クラス
- 3. 抽象クラスとのインタフェース
- 4. PHP抽象クラスとインタフェース
- 5. インタフェースと抽象クラスのコンストラクタ?
- 6. インタフェース対抽象クラスC++
- 7. 抽象クラスV/sのインタフェース
- 8. インタフェース対100%抽象クラス
- 9. この場合のインタフェースと抽象クラス
- 10. インタフェースと抽象化
- 11. Javaの抽象クラスは、私はそれを実装して、次のインタフェースと抽象クラスを持つインタフェース
- 12. c#インタフェース、抽象クラス、強制継承クラスを抽象クラスではない
- 13. 抽象とインタフェースは、Java
- 14. 抽象クラスと抽象メソッド
- 15. 抽象クラス対抽象クラス
- 16. クラス階層の設計 - インタフェース+基底クラス対抽象クラス
- 17. 抽象クラスとインタフェースをいつ使用するのですか?
- 18. OOPの原理インタフェースと抽象クラスの相違点
- 19. インタフェースと純粋な抽象クラスのJVM実装の違いは?
- 20. 代理人(ラムダ式)対インタフェースと抽象クラス
- 21. 私のアプリケーションに特有のインタフェースと抽象クラスの使用?
- 22. インタフェースと抽象クラスの記述的命名規則
- 23. 抽象クラスとインタフェースのオブジェクトを作成する
- 24. PHPでのインタフェースと抽象クラスの重要性
- 25. 抽象クラスとJavaでのインタフェースの問題
- 26. インタフェース/抽象メソッドの戻り型としてのJava拡張クラス
- 27. Javaの抽象クラス/インタフェースと指定型パラメータ
- 28. Java抽象クラス、抽象コンストラクタ
- 29. 抽象クラスとアクセサー
- 30. 抽象クラスとコンクリートクラス?
私はこれが「正確な」重複であることに同意しません。 –