継承とコンテナシップの主な違いは、継承では既存のクラスのプロパティやメソッドを新しいクラスで使用できるのに対し、コンテナシップは関連するオブジェクト間の所有権を表すコンポジションの別名であることである。
一般に、多くのソフトウェア会社では、オブジェクト指向プログラミング(OOP)を用いてソフトウェアを開発している。
これは、プログラマーがクラスを開発し、それを使ってオブジェクトを作成することを可能にするものです。
つまり、オブジェクトはクラスを使って作成される。
ここで、クラスは設計図であり、オブジェクトは状態や振る舞いを持つ実体です。
オブジェクトはメソッドを使って相互に情報を受け渡しする。
また、OOPに関連する概念として、継承とコンテナシップがあります。
継承とは何か
継承とは、既存のクラスのプロパティやメソッドを新しいクラスで使用する手法です。
既存のクラスは、親クラス、スーパークラス、または基底クラスです。
この新しいクラスをサブクラス、派生クラス、子クラスと呼ぶ。
また、継承を利用することで、プログラマは既存のコードを新しいコードで利用することができます。
したがって、継承はコードの再利用を可能にする。
さらに、継承にはさまざまな種類があります。
単一レベル継承 – 2つのクラス(A, B)があります。
BはAを継承する。
多段階継承 – クラスが3つ(A、B、C)ある。
さらに、CクラスはBクラスから、BクラスはAクラスから継承される。
多重継承 – 3つのクラス(A, B, C)が存在する。
クラスCはクラスAとBの両方から継承する。
階層継承 – 3つのクラス(A,B,C)が存在します。
BクラスとCクラスはAクラスから継承される。
ハイブリッド継承 – 多階層継承と多重継承を組み合わせたものです。
4つのクラス(A、B、C、D)が存在する。
さらに、BとCはAから、DはBとCから継承する。
コンテナ船とは
コンテナシップはコンポジションとも呼ばれる。
これは、所有権を意味する特殊な集約の一種である。
これは、任意のクラスが、そのクラスのオブジェクトを作ることによって、他のクラスのメンバーにアクセスすることを可能にします。
例えば、クラスAはクラスBのオブジェクトをメンバとして含むことができます。
つまり、コンテナシップは、クラス外の構成要素へのアクセス性を規定する。
この関係は、あるオブジェクトが他のオブジェクトに依存していること、依存関係があることを説明する。
また、コンテナシップは集約の一種であるため、”has-a “の関係を示す。
継承とコンテナシップの違い
定義
継承とは、既存のクラスのプロパティやメソッドを使用して新しいクラスを作成する方法論です。
しかし、コンテナシップとは、あるクラスが別のクラスのオブジェクトをメンバーデータとして含むことができる集約の一種である。
使用方法
さらに、継承はコードの再利用性を、コンテナシップは関連性を表現することを可能にする。
結論
簡単に説明すると、継承とコンテナシップは2つの関係です。
継承とコンテナシップの大きな違いは、継承は既存のクラスのプロパティやメソッドを新しいクラスで使用できるのに対し、コンテナシップは関連するオブジェクト間の所有権を表す合成の別名であることです。