20120609 java oo道場(ネタのメモの内、問題のみ)
Transcript of 20120609 java oo道場(ネタのメモの内、問題のみ)
ここらで、一発軽いコーディングを
「継承」についてのコーディング(その1)
継承させる
●3つのクラス「Oya」「Ko」「KeisyoMain」があります。 ⇒ 「http://bit.ly/L5Zs3y」にコードがあります。
問1.「KeisyoMain」クラスの1つ目のコメントアウトを解除して下さい ⇒ 「Ko」クラスが「Oya」クラスを継承するように修正して下さい
main()
KeisyoMain
printKo()
printZaisan()
Kouses
printOya()
printZaisan()
Oya
「継承」についてのコーディング(その2)
実行結果の確認
問2.「KeisyoMain」クラスの2つ目のコメントアウトを解除して
実行結果を確認してみて下さい。 また、「Ko」でオーバーライドされた「printZaisan()」の結果と、 「Oya」の「printZaisan()」の結果を確認してみて下さい
main()
KeisyoMain
printKo()
printZaisan()
Kouses
printOya()
printZaisan()
Oya
super.printZaisa
n() というコード
を追加してみましょう
「継承」についてのコーディング(その3)
実行結果の確認
問3.「Oya」クラスを型として、「Ko」のインスタンスを作成した場合の
実行結果を確認してみて下さい ⇒「Ko」クラス内に存在する「printKo()」は使用できたでしょうか?
main()
KeisyoMain
printKo()
printZaisan()
Kouses
printOya()
printZaisan()
Oya
「継承」についてのコーディング(その4)
実行結果の確認
問4.「Oya」クラスを型として、「Ko」のインスタンスを作成した物を、 「Ko」クラスの型へ「ダウンキャスト」した時の実行結果を
確認してみて下さい ⇒「Ko」クラス内に存在する「printKo()」は使用できたでしょうか?
main()
KeisyoMain
printKo()
printZaisan()
Kouses
printOya()
printZaisan()
Oya
「継承」についてのコーディング(番外編)
●「Ko」に対して、2つ以上の親クラスを継承させようとするとどうなるでしょう?
printKo()
printZaisan()
Ko
printOya()
printZaisan()
Oya1
printOya()
printZaisan()
Oya2
●「Oya1」が「Oya2」を継承し、「Oya2」が「Oya3」を継承するような関係の 場合、「Oya1」を継承した「Ko」の動きはどうなるでしょう?
printKo()
printZaisan()
Ko
printOya()
printZaisan()
Oya1
printOya2()
printZaisan()
Oya2
printOya3()
printZaisan()
Oya3
後は、各メソッドのアクセス修飾子を変えてみたりしても面白いかも
ここらで、もう一発軽いコーディングを
「インタフェース」についてのコーディング(その1)
実装させる
●5つのクラス(及びインタフェース)「Drivable」「Racable」 「Cycle」 「Train」「TestIFMain」があります。
⇒ 「」にコードがあります。
問1.「TestIFMain」クラスの1つ目のコメントアウトを解除して下さい ⇒ 「Cycle」クラスが「Drivable」インタフェースを実装するように
修正して下さい
main()
TestIFMain
start()
turn()
Cycleuses
start()
<Drivable>
start()
stop()
Train
start()
<Racable>
「インタフェース」についてのコーディング(その2)
実装させる
問2.「Cycle」クラスについて、「Racable」インタフェースも
実装するように修正して下さい
main()
TestIFMain
start()
turn()
Cycleuses
start()
<Drivable>
start()
stop()
Train
start()
<Racable>
「インタフェース」についてのコーディング(その3)
問3.「Cycle」クラスと「Train」クラスについて、実行結果を確認して下さい
main()
TestIFMain
start()
turn()
Cycleuses
start()
<Drivable>
start()
stop()
Train