わかりやすく 継承 プログラミング とは
オブジェクトで「一つのもの」を作りました(第12回)。でも、犬、猫、鳥をオブジェクトにすると、名前、年齢、食べるが何度も同じように重なります。重なる共通点を一か所に集めておき、それぞれに受け継がせるのが継承です。
何度も重なる部分
犬も猫も鳥も、みんなオブジェクトにできます。
でも三つを並べてみると、名前・年齢・食べるが三つとも同じように入っています。
同じことを三回書いているようなもので、種類が増えるほど、この重なりは大きくなります。
「重なりを見る」を押すと、犬・猫・鳥に同じように入っている名札がいっしょに光ります。
重なっている部分がひと目でわかります。
こうして同じものをオブジェクトごとにまた書くと、一つを直すときに全部をいちいち直さなければなりません。
では、この共通点はどこに集めておけばよいのでしょうか。
共通点を上に集める
重なる名前・年齢・食べるを、上の一か所へ引き上げます。
そこに「動物」という親を置くのです。
これで共通点は動物の一か所にだけあり、犬・猫・鳥はその下の子になります。
「共通点を上にまとめる」を押すと、重なっていた名札が上に上がり、「動物」という親が一つできます。
共通点を一か所に集めたので、子のほうはずっと身軽になりました。
でも、子にはもう名前・年齢・食べるがないのでは?
消えたのではなく、親から受け取っているのです。
親のものをそのまま受け継ぐ
子は、親が持っているものを自動的に全部持ちます。
犬は「動物」の名前・年齢・食べるを、書き直さなくてもそのまま受け継ぎます。
だから犬はもう立派な動物です。写したのではなく、受け取ったのです。
子を選ぶと、親の名札が下に降りてきて、そのまま埋まります。
犬も猫も鳥も、親である動物から同じように受け継ぎました。
でも三つがまったく同じなら、違う種類とはいえません。
犬はほえ、鳥は飛びます。そういうものは、どうやって足すのでしょうか。
受け継いだものの上に自分のものを足す
受け継いだ共通点はそのままにして、その上に自分だけのものを載せます。
犬は「ほえる」を、鳥は「飛ぶ」を足します。
親は同じでも足したものが違うので、犬と鳥は違う種類になるのです。
「自分のものを足す」を押すと、子に自分だけの名札がつきます。受け継いだものとは色が違います。
これで犬は「動物の共通点 + ほえる」です。
受け取ったものと足したものが一つになりました。
共通は親に、違いは子に。この組み立てのおかげで、最後に大きな利点が一つついてきます。
一度直せば、みんな変わる
継承の本当の力は、ここにあります。
親の「動物」に「寝る」を一つ足すと、犬も猫も鳥も一度に寝られるようになります。
子をいちいち直さなくてもみんな変わり、重複がなくなるので、ミスもいっしょに減ります。
値から始めて、オブジェクトで「もの」を作り、継承でそれらをきれいにまとめました。
これで私たちの手には、かなり大きなプログラムがあります。
でも、プログラムはどこかで必ずずれるものです。次のレッスンでは、そのずれを見つけて直す方法へ進みます。