思い出しました。
私が曖昧に覚えていたのは、階層を越えて継承したときの話。
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はなんか不完全だな。」
そんな風に考えたくなりませんか?
実際にソースを書いてどうなるか試してみてくださいね。