試験に出た問題② has-a関係、is-a関係 続き | Javaプログラマー資格試験(OCJ-P) WEB講座

Javaプログラマー資格試験(OCJ-P) WEB講座

Javaプログラマー資格(OCJ-P)を学習するブログです。

OCJ-P・Javaプログラマー資格をとりたい。
Javaプログラミングの入門者・初心者。

そんなあなたに、Javaプログラマー資格の取得に役立つ本質的な知識を、
分かりやすく解説していきます。

 思い出しました。
私が曖昧に覚えていたのは、階層を越えて継承したときの話。

class A{}
class B extends A{}
class C extends A{}

つまり、
A
└B
  └C

のとき、C is-a A と言えるのか?と言う話。
これはOKですね。
私は曖昧にしか理解していなかったので、
「もしかして、CはAを直接継承していないから、
C is-a Aとはいえないのかもな」と考えたのです。

これをしっかり理解するには、自分でソースを書くこと。
A a = new C();
と書いて、コンパイルエラーが起きなければ、OKですよね。

 また、複数のインターフェースを実装している場合、
また、インターフェースの特徴は、複数のインターフェースを実装できること。

つまり、
interface A{}
interface B{}
class C implements A,B{}
のとき、
C is-a A , C is-a Bが成立します。

「うーん。AとB両方揃ってはじめてCだから。
C is-a Aはなんか不完全だな。」

そんな風に考えたくなりませんか?
実際にソースを書いてどうなるか試してみてくださいね。