なぜアリババは注意継承を使用する開発者に助言しますか?

多くの人々は、ブロガーが、最近のトピックを更新していることを知っている - 「アリババのJava開発マニュアルの解釈」、これは別の記事のトピックです。

カプセル化、継承、ポリモーフィズム:Javaは、私たちはJavaはオブジェクト指向言語であることを知って、非常に最初の日から学ぶJavaおよび翌日学ぶために、我々は、3つの基本的なオブジェクト指向機能を知っています。

だから、多くの開発者のために、確かに継承するためには見知らぬ人ではありません。しかし、確実に全てのシーンにそれを継承しましたか?本当に大丈夫コード拡張を行うには、継承を使用するには何のタブーはありませんか?

なぜ「マニュアルアリババJavaの開発」条項が含まれています:継承方法の慎重な使用が達成するために組み合わせて、優先使用を拡張します。

![] [1]

本論文では、これらの問題を解決するために、簡単な分析。

オブジェクト指向の再利用

ただ、継承を学ぶ時には誰もが多かれ少なかれ、そのような印象を持っています:継承は私が多重クラスを達成するのを助けることができます。そのため、再利用を必要なときにこの本がそのように書かれているので、多くの開発者は、いくつかのコードは、クラスの継承を使用することは非常に自然な形になります(そのため、教師は授業です)。しかし、実際には、そうすることは間違っています。コードの長期大量使用は、高いメンテナンスコストをもたらす継承します。

前述の多重化は、ここで多重化を指向オブジェクトへの簡単な紹介です。

再利用性は、オブジェクト指向技術がもたらすの偉大な潜在的な利点の一つです。よく使用されている場合、それは、私たちは、開発効率を向上させ、開発時間を大幅に節約に役立つだろう。その後、虐待を受けている場合しかし、それは維持が困難多くのコードを生成することがあります。

オブジェクト指向開発言語としては、Javaコードの再利用は、1つの、興味深い機能です。Javaコードの継承だけでなく、3つの特定のプロキシフォームの組み合わせを再利用します。

受け継ぎます

継承(継承)リンクのクラスとクラスの階層モデル。これは、(親、親インタフェースと呼ばれる)別のクラスの機能を継承(サブクラス、サブインタフェースとも呼ばれる)のクラスを参照し、独自の新しい機能の容量を増やすことができ、継承は、クラスまたはインタフェースを持つクラスでありますインタフェースとの間の最も一般的な関係。

![] [2]

継承はある関係です。なリンゴなどの果物、犬は動物、ハスキー犬です。

組み合わせ

コンビネーション(組成)は、全体の部分の関係を反映しています。

![] [3]

組み合わせはあり-の関係です。このような車のエンジンとして、その上の学校の先生とがあります。

継承の違いと相まって

クラス時間の関係、継承の組み合わせを決定する点から、全ての第一と差があります。

継承、コンパイル時に関係を決定して、特定の名前のクラスを継承するコードを書きます。そして、基本クラスから継承するため、アプリケーションの柔軟性を減らし、実行時に動的に変更することはできません。

プログラミング・インターフェースのためのコードを書く組み合わせが、使用されてもよいです。したがって、リレーションシップクラスの組み合わせは、一般的に、実行時に決定します。

また、特定の違いがあります符号多重方式です。

継承構造は、サブクラスの親クラスの内部詳細が表示されています。だから我々は、一般的に、コードの再利用を通じて継承されたと言うことができている白いカセットコードの再利用

基底クラスが変更された場合は、派生クラスの実装も変更されます。これは、サブクラスの予期しない動作につながります。

新しい組み合わせは、既存のオブジェクトのより複雑な機能アセンブリ(組成)を行うことによって、生成されます。オブジェクト間で、その内部の詳細が表示されていないので、私たちは、このようにコードの再利用があると言うことができブラックカートリッジのコードの再利用

ポートフォリオは、一般的にタイプを定義されているので、クラスが呼び出されます達成の具体的な方法をコンパイル時に、それほどわかりません。

最後に、Javaは多重継承をサポートしていない、との組み合わせは限定されるものではありません。人のように一つだけの父を持つことができますが、彼は車の多くを持つことができます。

比較の長所と短所

関係の組み合わせ
継承
利点は:互いに比較的独立パッケージ、クラス、およびローカルクラス間の全体的な疎結合を破壊しません
短所:破壊されたパッケージ間の密結合、子と親クラス、サブクラスは、独立のサブクラスの不足、親クラスの実装に依存します
利点:スケーラビリティ
短所:拡張をサポートしていますが、犠牲にしてシステムの構造の複雑さを増加させる傾向があります
長所:動的な組み合わせをサポートします。実行時には、オブジェクト全体は部分のオブジェクトの種類を選択することができます 短所:動的な継承をサポートしていません。実行時に、あなたは親クラスの別のサブクラスを選択することはできません
新しいインタフェースを提供するために、クラス全体をパッケージ化することができ、部分的にカプセル化されたローカルクラスインターフェイスクラス:メリット 短所:親クラスのサブクラスは、インターフェイスを変更することはできません
短所:全クラスが自動的に同じクラスとローカルインターフェイスを取得することはできません
長所:サブクラスは、自動的に親クラス・インターフェースを継承することができます
短所:あなたは、オブジェクトのクラス全体を作成するとき、あなたはすべてのローカルクラスのオブジェクトを作成する必要があります
長所:あなたは親クラスのオブジェクトを作成することなく、オブジェクトのサブクラスを作成する場合

なぜ優れた継承の組み合わせ

私は多くの人が「多目的組み合わせ、少ない相続」「継承の組み合わせよりも優れています。」または、オブジェクト指向の多くの重要な原則があることを知っていると信じています。前の説明から、長所と短所の比較を見ることができる持っている、組み合わせは確かに継承よりも柔軟ですが、また、コードの保守により助長。

だから、それが代わりに優先度継承の組み合わせを使用しての、同じ可能で推奨されます。組み合わせは、単純に、より安全に、より柔軟かつ効率的であるため。

それが使用され、[実行可能]同じの下で、以前のことを言われないの継承を意味しないことに注意してください。いくつかのシーンがありますが、まだ継承を使用する必要がある、または使用の継承のために、より適しています。

「アリ・ババのJava開発マニュアル」に加えて、多くの他の材料でも継承の使用と組み合わせに説明し、制約されています。

注意して使用して継承され、それらの使用は、あなたが効果的な状況を技術を使用してくださいしている時に限られています。決意の方法は、それらが基底クラスの新しいクラスへ上向きに移行する必要がありか否かを問うことです。必要であれば、連続が必要です。逆にそれは慎重にあなたが継承が必要かどうかを検討すべきです。「Javaプログラミングのアイデア」

サブクラスは本当に唯一の継承のために、時間のスーパークラスのサブタイプである場合のみです。存在があるのみときに、2つの関係換言すれば、二つのクラスAおよびBのために、それは、クラスB、クラスAに継続すべきです 「効果的なJavaの」

[1]:https://www.hollischuang.com/wp-content/uploads/2019/09/15672352331109.jpg[2]:https://www.hollischuang.com/wp-content/uploads/2019/09 /15672382013120.jpg[3]:https://www.hollischuang.com/wp-content/uploads/2019/09/15672382895979.jpg

おすすめ

転載: juejin.im/post/5d75b099e51d4561e62371d9