【継承】と【委譲】の違いとは?例文付きで使い方や意味をわかりやすく解説
※本記事には広告・プロモーションが含まれています。
継承と委譲の分かりやすい違い
継承と委譲の違いは、「クラスの持ち物をそのまま引き継ぐか」と「別のオブジェクトに仕事を任せるか」にあります。
継承は、すでにあるクラスの持ち物や振る舞いをそのまま引き継ぎ、自分の一部として使える形にする仕組みです。
委譲は、別のオブジェクトを内側に持ち、その仕事を任せて結果だけ受け取る形で、任せる相手を差し替えやすく変更に強い仕組みです。
継承とは?
継承とは、あるクラスがすでに定義されている別のクラスの持ち物と振る舞いを引き継ぎ、自分のものとして扱えるようにする仕組みのことです。
「犬は動物である」のように、子が親の一種だといえる関係を表す場面で用いられます。
共通する部分を親にまとめておくことで、同じ内容を何度も書かずに済むという性質を持ちます。
ただし結びつきは強く、親を直せば子すべてに影響が及びます。
継承の例文
- ( 1 ) 共通部分を親クラスにまとめ、継承で引き継ぐようにした。
- ( 2 ) 継承は「である」の関係が成り立つときに素直に当てはまる。
- ( 3 ) 親を修正したところ、継承しているすべての子に影響が出た。
- ( 4 ) 継承の階層が深くなりすぎて、どこで定義されているか追えなくなった。
継承の会話例
共通の処理があるので、継承でまとめようと思うのですが。
少し待ってください。その二つ、「一方は他方の一種だ」と言えますか。
うーん、たまたま処理が似ているだけかもしれません。
それなら継承は避けたほうが無難です。親を直すと子すべてに影響しますから。
委譲とは?
委譲とは、自分では処理を抱え込まず、内部に持っている別のオブジェクトに仕事を任せ、その結果を使う形のことです。
「印刷する」という呼びかけを受けた部品が、実際の処理を内部に持つ担当のオブジェクトに回す場面で用いられます。
任せる相手を後から差し替えられるため、外から見た呼びかけ方を変えずに中身の振る舞いを変えられるという性質を持ちます。
一方、任せる呼びかけを一つずつ書く手間が増えるため、コードはやや長くなりがちです。
委譲の例文
- ( 1 ) 実際の処理は内部の担当オブジェクトに委譲している。
- ( 2 ) 委譲なら、任せる相手を差し替えるだけで振る舞いを変えられる。
- ( 3 ) 委譲は「持っている」の関係で、親子関係にはならない。
- ( 4 ) 呼びかけを一つずつ書き足す必要があり、委譲はコードがやや長くなる。
委譲の会話例
継承が避けられるなら、委譲というやり方はどうでしょう。
はい、委譲です。共通の処理を担当オブジェクトに切り出して、内部に持たせて任せます。
親子ではなく、抱えている形ですか。
そうです。「持っている」の関係ですね。任せる相手は後から差し替えられますよ。
継承と委譲の違いまとめ
継承と委譲の違いは、クラス同士の結びつきの強さにあります。
継承は親クラスの定義を引き継ぐ仕組みで結びつきが強いのに対し、委譲は別のオブジェクトに仕事を任せる仕組みで結びつきが弱く、差し替えやすい仕組みです。
子が親の一種だと言い切れる場合は「継承」、似ているだけで一種とは言えない場合は「委譲」と区別されます。
継承と委譲の読み方
- 継承(ひらがな):けいしょう
- 継承(ローマ字):keishou
- 委譲(ひらがな):いじょう
- 委譲(ローマ字):ijou