私はちょうどそれがMixinsをサポートすることを明らかにJavaのフレームワーク上でarticleを見つけました(私が知っているすべてのものが同じものであってもよい...)私も聞いたことがあるAOPであり、どのように違いがあるのかはわかりません...抽象クラスとミックスインの違いは何ですか?
13
A
答えて
23
言語に依存しないレベルでは、mixinはクラスに機能を追加するだけであり、プログラマの利便性とコードの重複を避けるためです。抽象クラス(基本クラス)はis-a関係を形成し、多態性を可能にします。継承が過度に使用される理由の1つは、ミックスインを実際にサポートしていない言語で定型文を記述することなくミックスインを実装する簡単な方法だということです。問題は、ポリモーフィックな関係を副作用として宣言し、APIをより混乱させ、おそらくあいまい性を追加することです。したがって、DやRubyのような新しい言語では、ミックスインをネイティブフィーチャとしてサポートしているため、ポリモーフィックのis-a関係を宣言することなく、クラスに一連の機能を追加する便利な方法が提供されます。
0
ミックスインはスタンドアローンクラスではありません。彼らはあなたが宣言するクラスにいくつかの機能を追加するだけです。 Pythonでは、クラスデコレータによって簡単に適用できます。例えば、あなたのクラスをSingleton mixinで飾ることができ、クラスをシングルトンにすることができます。
関連する問題
- 1. python抽象基底クラス、mixinと抽象メソッドの違い
- 2. 抽象クラスと非抽象クラスから派生する相違点
- 3. 抽象クラス対抽象クラス
- 4. インターフェイスと抽象クラスの利点は何ですか?
- 5. インタフェースと純粋な抽象クラスのJVM実装の違いは?
- 6. .NET私は、次の抽象クラスを持つ抽象クラスから
- 7. は抽象クラス
- 8. Java抽象クラス、抽象コンストラクタ
- 9. 具体的なRTNと抽象的なRTNの違いは何ですか?
- 10. Versionプロパティで抽象基底クラスSession.Lockと抽象基本クラス
- 11. インタフェースと抽象クラス
- 12. 抽象クラスとコンクリートクラス?
- 13. 抽象クラスとアクセサー
- 14. JAXBと抽象クラス
- 15. インタフェースと抽象クラス?
- 16. インタフェースと抽象クラス
- 17. リターンと抽象クラス?
- 18. 基本クラスは抽象クラスであり、派生クラスも抽象クラスです。
- 19. 抽象基本クラスのコールバック関数と仮想関数の使用の違いは何ですか?
- 20. 抽象クラスとNHibernateは
- 21. コナナ3の空の抽象クラスの目的は何ですか?
- 22. PHPの抽象クラスの子で抽象クラスの親をインスタンス化することは可能ですか?
- 23. C#の抽象クラスとメソッド
- 24. @Autowiredは抽象クラスで
- 25. 抽象クラスvsクラス
- 26. 抽象クラス、コピーコンストラクタ
- 27. 抽象クラス、
- 28. AS3 - 抽象クラス
- 29. デシリアライズ抽象クラス
- 30. 抽象クラス
+1良い簡単な説明。このCOPの話はすごく聞こえます。私はこの種のものがコア言語レベルにまで進化していくのを見たいと思っています。 AOPのものと同じです。 – BuddyJoe
@Bruno C++のようなコア言語ですか? – leeand00
簡潔で非常に明確です。すごい説明! – Hugo