public class A
{ }
public class B extends A
{
public void add()
{
System.out.println("add in B");
}
}
ここで、次のようにaddを呼び出すと、エラーが返されます。 A a1 = new B; a1.add();親クラスの子メソッドを子クラスのオブジェクトを参照している親クラスの参照で呼び出す必要があるのはなぜですか?
しかし、クラスAにadd()メソッドを追加して同様の方法で呼び出すと、子クラスのadd()メソッドが呼び出されます。
すなわち
public class A
{
public void add()
{
System.out.println("add in A");
}
}
public class B extends A
{
public void add()
{
System.out.println("add in B");
}
}
コール:
A a1 = new B;
a1.add();
出力:
add in B
なぜそれはそうでしょうか?
これはポリモーフィズムのケースです –