【初心者】Java質問・相談スレッド105【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0351デフォルトの名無しさん
2007/09/05(水) 01:20:35class Derived extends Base{ void meth1(){System.out.println("Derived meth1メソッド実行を表示しました。"); } }
class Super{ Base meth(){ System.out.println("Super methメソッド実行を表示しました。");return new Base(); } }
class Sub extends Super{ Derived meth(){ System.out.println("Sub methメソッド実行を表示しました。"); return new Base(); } }
class Sample{ public static void main(String[] args){ Super s = new Sub();s.meth().meth1(); } }
問題集やっててわからないことがあったので質問です。
このコードはclassSubのreturn new Base()の箇所が間違いで、
エラーになるようなのですが、
どういう理由でエラーになるのかがわかりません。
○ Base meth() ... return new Base
○ Base meth() ... return new Derived
× Derived meth() ... return new Base
○ Derived meth() ... return new Derived
以上4通りの戻り値型と、作成するオブジェクトの型の組み合わせをclassSubで試したところ、
3つ目(つまり前述コードの場合)だけがエラーになってしまいますが、理由がわかりません。
いろいろ検索してもわからなかったので、理由を教えていただければなと思います。
スペースの都合上、読みにくいコードになりました、すいません。
質問不足な感があったら、あとで追記したいと思います。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています