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

10
ここらで、一発軽い コーディングを

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

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

ここらで、一発軽いコーディングを

Page 2: 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

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

「継承」についてのコーディング(その2)

実行結果の確認

問2.「KeisyoMain」クラスの2つ目のコメントアウトを解除して

   実行結果を確認してみて下さい。   また、「Ko」でオーバーライドされた「printZaisan()」の結果と、   「Oya」の「printZaisan()」の結果を確認してみて下さい

main()

KeisyoMain

printKo()

printZaisan()

Kouses

printOya()

printZaisan()

Oya

super.printZaisa

n() というコード

を追加してみましょう

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

「継承」についてのコーディング(その3)

実行結果の確認

問3.「Oya」クラスを型として、「Ko」のインスタンスを作成した場合の

   実行結果を確認してみて下さい   ⇒「Ko」クラス内に存在する「printKo()」は使用できたでしょうか?

main()

KeisyoMain

printKo()

printZaisan()

Kouses

printOya()

printZaisan()

Oya

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

「継承」についてのコーディング(その4)

実行結果の確認

問4.「Oya」クラスを型として、「Ko」のインスタンスを作成した物を、   「Ko」クラスの型へ「ダウンキャスト」した時の実行結果を

   確認してみて下さい   ⇒「Ko」クラス内に存在する「printKo()」は使用できたでしょうか?

main()

KeisyoMain

printKo()

printZaisan()

Kouses

printOya()

printZaisan()

Oya

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

「継承」についてのコーディング(番外編)

●「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

後は、各メソッドのアクセス修飾子を変えてみたりしても面白いかも

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

ここらで、もう一発軽いコーディングを

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

「インタフェース」についてのコーディング(その1)

実装させる

●5つのクラス(及びインタフェース)「Drivable」「Racable」  「Cycle」 「Train」「TestIFMain」があります。

  ⇒ 「」にコードがあります。

問1.「TestIFMain」クラスの1つ目のコメントアウトを解除して下さい   ⇒ 「Cycle」クラスが「Drivable」インタフェースを実装するように

     修正して下さい

main()

TestIFMain

start()

turn()

Cycleuses

start()

<Drivable>

start()

stop()

Train

start()

<Racable>

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

「インタフェース」についてのコーディング(その2)

実装させる

問2.「Cycle」クラスについて、「Racable」インタフェースも

    実装するように修正して下さい

main()

TestIFMain

start()

turn()

Cycleuses

start()

<Drivable>

start()

stop()

Train

start()

<Racable>

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

「インタフェース」についてのコーディング(その3)

問3.「Cycle」クラスと「Train」クラスについて、実行結果を確認して下さい

main()

TestIFMain

start()

turn()

Cycleuses

start()

<Drivable>

start()

stop()

Train