通過テストの解答 <新わかりやすいJava 入門編>

 

問1 問2

【注】¥は漢字を使って表示しています。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と同じパッケージにはないので、アクセスできず、コンパイルエラーになる。