20120609 java oo道場(ネタのメモの内、問題のみ)

Post on 02-Jul-2015

516 views 1 download

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