継承との組成差
何継承されています
継承三(継承、カプセル化、多型)のオブジェクトの基本的な特徴の一つであるので、サブクラスオブジェクト(インスタンス)インスタンスフィールドと親クラスを有する方法、またはサブクラスこと、サブクラス継承行動と親クラスの特性を継承しています親クラスから継承されたメソッド、同じ親クラスの振る舞いを持つサブクラス。キーワードで実装の継承は、すべてのクラスはjava.lang.ObjectのサブクラスのあるデフォルトのJava、Javaで拡張します。継承はある、という関係を強調しました。
直接一例として継承された学習:
/**
* 动物
*/
public class Animal { public void breathing() { System.out.println("呼气...吸气..."); } }
/**
* 飞行动物
* 继承
*/
public class FlyingAnimals extends Animal{ public void filying() { System.out.println("飞行..."); } public static void main(String[] args) { FlyingAnimals flyingAnimals = new FlyingAnimals(); flyingAnimals.breathing(); flyingAnimals.filying(); } }
結果:
呼気...吸入...
飛んで...
継承は、コードの再利用の方法です。連続して、サブクラスに見える親クラスの内部実装の詳細は、「白カセット」コードの再利用です。
組み合わせは何ですか
すなわち、より複雑な機能を有する新規組成物を組み立てることによって、既存のオブジェクトの組み合わせ。以下のような:
/**
* 动物
*/
public class Animal { public void breathing() { System.out.println("呼气...吸气..."); } }
/**
* 爬行动物
* 组合
*/
public class Reptilia { private Animal animal; public Reptilia(Animal animal) { this.animal = animal; } public void crawling() { System.out.println("爬行..."); } public void breathing() { animal.breathing(); } public static void main(String[] args) { Animal animal = new Animal(); Reptilia reptilia = new Reptilia(animal); reptilia.breathing();; reptilia.crawling(); } }
結果:
呼気...吸入...
クロール...
部分と全体の組み合わせは、持っている、という関係が強調されます。そのようなAシナリオについては、以下のため、より組み合わせ。
/**
* 轮胎
*/
class Tire {
public void run() {
System.out.println("轮胎转动..."); } } /** * 车灯 */ class Light { public void light() { System.out.println("灯亮..."); } }
/**
* 交通工具
* 组合
*/
public class Vehicle { private Tire tire; private Light light; public Vehicle(Tire tire,Light light) { this.tire = tire; this.light = light; } public void operation() { light.light(); tire.run(); } public static void main(String[] args) { Tire tire = new Tire(); Light light = new Light(); Vehicle vehicle = new Vehicle(tire,light); vehicle.operation(); } }
結果:
...点灯
タイヤ回転を...
継承の組み合わせとの違いとの関係
継承とオブジェクト指向のコードの組み合わせは、多重化方式です。コード多重黒カートリッジに属する内部の詳細は見えないオブジェクト間の内部の詳細可視サブクラス親白カートリッジを多重コードに属するクラス、およびそれらの組み合わせ、。符号化処理における継承は、コンパイル時に関係を決定し、合わせた関係は、一般に、実行時に決定される特定の親クラスを指定します。継承は関係が-で、組み合わせが持っている、という関係を強調していることを強調しました。
長所と短所の継承と組み合わせ
継承の利点と欠点
利点:
- 親クラスを継承することによって達成拡張をサポートしていますが、システムがより複雑な構造になります
- コードを変更する簡単な多重化
短所:
- コードの再利用ホワイトボックス、サブクラスブレークカプセル化にさらされ、親クラスの実装の詳細
- 親クラスの実装コードの変更を行うことができる場合は、サブクラスも、増加のメンテナンスの難易度を変更する必要がありました。
- 独立のサブクラス欠如は、高度に結合された、親クラスに依存します
- 動的な拡張をサポートしていない、それが親クラスコンパイル時に決定されました
長所と短所の組み合わせ
利点:
- コードは、内部のオブジェクトを含むことパッケージが良好で、目に見える外側の実装の詳細ではなく、ブラックボックスを再利用します。
- ルーズ互いに独立して、クラス全体とローカルクラスとの間の結合。
- 延長サポート
- 各クラスは、1つのタスクのみに焦点を当てて
- 延びる、異なるタイプの組合せは、実行時に特定の対象物に応じて適宜選択することができる支持体(比スケーラビリティを継承)
短所:
- あなたは、オブジェクトのクラス全体を作成する場合、すべてのローカルクラスのオブジェクトを作成する必要があります。システムオブジェクトの多くを引き起こします。
どのような状況の継承の使用、どのような状況下での組み合わせを使用しての下で
:前述の分析から、かなり多くなるように遺伝、プラスJavaサポート単一継承の組み合わせ効果、より
二つのクラスの間の関係であり、しない限り、または可能な組み合わせ。