オブジェクトの参照(その1)
オブジェクトはスーパークラスの型でも代入可能です。クラス継承の最上位のクラスはjava.lang.Objectクラスなので、Object型の変数にはどのようなオブジェクトでも代入可能です。
=======クイズ
class A {}
class B extends A {}
のとき、以下のコードはどの様な結果になるか。
・ 実行時エラー
・ コンパイルエラー
・ 正常実行
A a1 = new A();
A a2 = new B();
B b1 = new A();
B b2 = new B();
Object o1 = new A();
Object o2 = new B();
------- 正解
A a1 = new A(); → 正常実行
A a2 = new B(); → 正常実行
B b1 = new A(); → コンパイルエラー
B b2 = new B(); → 正常実行
Object o1 = new A(); → 正常実行
Object o2 = new B(); → 正常実行
=======クイズ
class A {}
class B extends A {}
のとき、以下のコードはどの様な結果になるか。
・ 実行時エラー
・ コンパイルエラー
・ 正常実行
A a1 = new A();
A a2 = new B();
B b1 = new A();
B b2 = new B();
Object o1 = new A();
Object o2 = new B();
------- 正解
A a1 = new A(); → 正常実行
A a2 = new B(); → 正常実行
B b1 = new A(); → コンパイルエラー
B b2 = new B(); → 正常実行
Object o1 = new A(); → 正常実行
Object o2 = new B(); → 正常実行