Java SE7 Silver の資格を目指し勉強中です。
分からない点はポリモーフィズムです。
1.「インスタンスがどのようなメソッドやフィールドを持っていたとしても、
扱っている型で定義されているもの以外は使えない」という文と
2.「何型で扱っていてもインスタンスが持つメソッドが実行される」という文があります。
どちらも黒本(P272とp519)に書かれているのですが真逆のように思えます。
1に関しては
public class A{
public void hello(){
//any code
}
}
public class B extends A{
public void sample(){
//any code
}
}
public class Main{
public static void main(String[] args){
A a = new B();
a.sample(); //←Aには存在しないメソッドでコンパイルエラーとなる
}
}
--------------------------------------------
一方、2に関しては
public class A{
public void sample(){
System.out.println("A");
}
}
public class B extends A{
public void sample(){
System.out.println("B");
}
}
public class Main{
public static void main(String[] args){
A a = new B();
a.sample();
}
}
では、「B」と表示される、というのが答えです。
何がどう違うのかが全く分かりません。
これから席を外すので、返信は夜になると思いますが、
どうか、よろしくお願いします。
追記:修正依頼を受け、修正済みです。

回答3件
あなたの回答
tips
プレビュー