問1 C
g1とg2は同じインスタンスを参照する
問2 B
g1は宣言しただけで、何も入っていない(初期化されていない)のでコンパイルエラーになる。
B
Sales型のsには、参照が入っている。finalが付いているが、それは参照の値を変えることができないといいう意味で、参照を使ってアクセスしたインスタンスの変数の値を変えられないわけではない。
A C E
・Eは、varがAdvancedStat型として使えることを意味するので、そのスーパークラスであるStat型の変数にアップキャストして代入できる
・Fは、varがBasicStat型として使えることを意味するが、Statクラスはそのサブクラスなのでアップキャストできない
B
mには、MyMessage型をアップキャストしたインスタンスが入っているので、オーバーライドされたevalメソッドが実行される
問1 B
Fooクラスのdoitメソッドの定義から、アクセス修飾子はパッケージアクセスよりも広いprotectedかpublic、戻り値型はFoo型かそのサブクラスのBar型でなければいけない。また、引数校正は同じでなければいけないので、該当するのはBだけである。Cはdothatメソッドなのでオーバーライドではない。
問2 D
引数校正を変えねばならないので、該当するのはDしかない。