次のようなコードがあります。
abstract class ExampleOne {
int dataOne = 1000;
abstract void display();
}
class ExampleTwo extends ExampleOne {
int dataTwo;
ExampleTwo(int varOne) {
dataTwo = varOne;
}
public void disp() {
System.out.println("Testing");
}
public void display() {
System.out.println(dataOne);
}
}
class Example {
public static void main(String args[]) {
ExampleOne obj = new ExampleTwo(20);
obj.disp();
obj.display();
}
}
これをコンパイルすると、エラーが発生します。
obj.disp();
^
symbol: method disp()
location: variable obj of type ExampleOne
なぜこれが起こるのですか?
ExampleTwo
のインスタンスをに割り当てていますが、Java が の代わりにインスタンスをExampleOne
選択しないのはなぜですか?ExampleOne
ExampleTwo
dynamic polymorphism
!に関しても同じ概念が機能します。
これはなぜですか?