クラスの詳細 つづき |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
とまあ、簡単だけど
クラスの継承の形態を
見た訳だけど。
どうかな? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
クラスの仕組みって
思ったより簡単なんだね、
単一継承と多重継承でしょ。
それから、この継承を階層化
するのと、たった3つの形の
組み合わせしか・・・
あ! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
えっ?
なんか
あった? |
 |
|
 |
そうだよ! |
|
|
|
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
ちょ、ちょっと、待って、なぽちゃん!
子クラスは別のクラスの親になれるんだよね!?
ってことは!
多重継承したクラスが親クラスになって
それを継承した子クラスがさらに多重継承して
オーバライドしたらアクセス権が単一継承して
プライベートがオーバーロードして作った
インスタンスは派生クラスが基本クラスになったのが
ぬかみそ自動車でー・・・
継承をどんどん重ねて
組み合わせって無限大ー!!
どこかで同じ名前は使ってない?
何回も同じクラス継承してたらどうしよう?
壊れちゃうの?壊れちゃうでしょう?
複雑すぎてなにがなんだかかんだかー!!! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
ぷしゅー |
ムリー
全然簡単じゃないー!
オーバーライド
オーバーロード・・・
・・・オーバー・・・
オーバー・・・ |
 |
|
 |
オーバーヒート?
みんな
ごちゃごちゃね。 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
良い所に気づきました。
そう、クラスの継承は、
継承の仕方によって複雑化する。
そして問題を引き起こす
可能性があるんだ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
きゅー |
 |
|
 |
ゲラゲラゲラ
ぬかみそ継承
ですな。 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
例えば、多重継承の問題。
もし複数の親クラスが
同じクラスを継承していたら
子クラスはどの親クラスの
メソッドを継承する?
これは
ダイヤモンド継承(菱形継承)
と言われる問題だよ。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
お答え
下さいマセ。 |
|
ダイヤモンド型
になるんだ・・・ |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
うーん。
インスタンスを作ったら
どっちのメソッドを使う
のかな? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
教えて! |
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
答えは
「このままじゃ継承できない」。
あいまいな部分を解決しないとね。
そして、あいまいな部分の
解決方法は開発言語によって
異なるんだ。
オブジェクト指向は考え方。
それをどう実装するかは
開発言語によって違うんだよ。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
言語ごとなのー
何度も
しつこいけどー |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
例えば、C++の場合は、
「仮想継承」と言う仕組みを
使って対応したりする。
そして、Javaの場合は
そもそも多重継承自体が
許可されない。
多重継承が
できないんだよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
ずどーん!
でっきませんー
うわーどうしよー |
 |
|
 |
それで
大丈夫なの? |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
Javaの場合、
多重継承はメリットより
デメリットの方が多いと考えて
ばっさり切り捨てたんだな。
でも、大丈夫。
無くてもプログラムを作る上で
問題ないし、やろうと思えば
似たようこともできるんだよ。
ここら辺はまたその内。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
でも、
大丈夫でした。
おしまい。 |
 |
|
 |
はあ~
Javaって
大胆だねえ~ |
|
|