【注】¥は漢字を使って表示しています。Eclipseにコピーして動かす時は、半角の¥に書き換えてください。
E. class Dog extends Animal { }
継承できるスーパークラスは1つだけ。 C はpureA( )となっているので不可。
14行目のidがコンパイルエラー。
id はスーパークラスでprivateアクセスのため、サブクラスでは継承できない。14行目は継承していないidを使っているのでコンパイルエラーになる。
C. Subの5行目でコンパイルエラー
dispメソッドはprotectedアクセスなので、Subクラスはdispメソッドを継承している。しかし、test.disp() は、継承したdispメソッドを使う書き方ではないことに注意する。test.disp()は、スーパークラスのオブジェクトである test を通してdispメソッドを実行するので、継承とは関係なく、単にTestクラスのdispメソッドを使用する、というケースに当たる。この場合、protected修飾子のもう1つの機能である「同じパッケージ内ならアクセスできる」という機能が働く。ところが、SubはTestと同じパッケージにはないので、アクセスできず、コンパイルエラーになる。