is,hasと継承


引き継ぎの時にisとhasが混同したというのでまとめてみました
In Java, a Has-A relationship is also known as composition. It is also used for code reusability in Java. In Java, a Has-A relationship simply means that an instance of one class has a reference to an instance of another class or an other instance of the same class. For example, a car has an engine, a dog has a tail and so on. In Java, there is no such keyword that implements a Has-A relationship. But we mostly use new keywords to implement a Has-A relationship in Java.

is


isは同じと言えますが、
例えば、PulsarはBikeの一種で、Pulsar=自転車が成り立っています.
Parent parent = new Child();
親クラスの変数とメソッドのみを呼び出すことができます.
子クラスに親クラスから逸脱するメソッドがある場合は、このメソッドを呼び出すことができます.(オブジェクトの暗黙的な形式のコピー)

has


hasは含まれています
Pulsarにはエンジンが含まれていますが、Pulsar!=エンジンです.
class Pulsar {
	Engine engine = new Engine();
    engine.start();
}
他のオブジェクトを受け入れ、その機能を使用します.
受け入れられたオブジェクトの変数とメソッドを使用できます.(メンバー変数をオブジェクトとして使用)

メリットとデメリット


is

  • 符号間の結合が良好であり、多形性を実現することができる.(肩書きを継ぐ空軍、海軍、陸軍を考える)
  • 親リストが変更されると、コードが破損する危険があります.
  • has

  • クラスはオブジェクトにばらばらに結合されているため、詳細に変更があっても簡単にコンポーネントを変更できます.(柔軟性)
  • 結合度が低いことは、必ずしもメンテナンスに有利ではない.
  • おしゃべり


    (Pulsarは何かを探していて、少し曖昧です)

    ソース
    https://www.c-sharpcorner.com/UploadFile/3614a6/is-a-and-has-a-relationship-in-java/
    https://gbs1995.tistory.com/41
    https://minusi.tistory.com/entry/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5%EC%A0%81-%EA%B4%80%EC%A0%90%EC%97%90%EC%84%9C%EC%9D%98-has-a%EC%99%80-is-a-%EC%B0%A8%EC%9D%B4%EC%A0%90