正しい継承 is-aの原則
☆ 正しい継承
「is-aの原則」と言われるルールに則っている継承
is-aの原則とは?
子クラスは親クラスの一種であるということ
ex. 親 Hero 子 SuperHero
SuperHeroはあくまでHeroの一種
☆ 間違った継承
概念としてis-aの関係がないにも関わらず、継承を使ってしまうこと
ex. 親 Item ...メソッド (名前)(値段)
子 House... メソッド (名前)(値段)(住所)
メソッドの内容で重複する部分があるので、継承した方が便利そう
ただis-aの関係に当てはめてみると、、、
House is a Item (家はアイテムの一種である)←?
★「is-aの原則」が成立しないならば、楽が出来るとしても継承を使ってはならない
なぜ?
・将来クラスを拡張していった場合に現実世界と矛盾が生じるから
・オブジェクト指向の3大機能の1つ「多様性」を利用できなくなるから
ex. 親クラスItemに(投げてダメージ)というメソッドを追加
↓
自動的にItemを継承した子クラスHouseにも(投げてダメージ)というメソッドが追加される、、、家を投げる?
正しい継承をしていくと
親クラス 「一般的、抽象的、曖昧なもの」 汎化
⇩
子クラス 「特殊で具体的なもの」 特化
(親クラスを元にどんどん機能を追加していくから)
イメージ図
上にいく程クラスが汎化していくことを表す
親 Character 汎化(曖昧、一般的)
↑
子 Hero
↑
孫 SuperHero 特化(具体的、特殊)