次のプログラムで。メソッドはタイプごとに動的に呼び出されます。しかし、変数を動的に呼び出すのはどうですか。なぜそうできないのですか?
class Super {
public int field = 0;
public int getField() {
return field;
}
}
class Sub extends Super {
public int field = 1;
public int getField() {
return field;
}
public int getSuperField() {
return super.field;
}
}
public class FieldAccess {
public static void main(String[] args) {
Super sup = new Sub();
System.out.println("sup.field = " + sup.field + ", sup.getField() = " + sup.getField());
Sub sub = new Sub();
System.out.println("sub.field = " + sub.field + ", sub.getField() = " + sub.getField() + ", sub.getSuperField() = "+ sub.getSuperField());
}
}
出力:
sup.field = 0, sup.getField() = 1
sub.field = 1, sub.getField() = 1, sub.getSuperField() = 0
ここで、sup.method() が動的に見つかる場合、なぜ sup.variable を動的に取得できないのでしょうか?
出来ますか?そうでない場合はなぜですか?
(superclas)animal--->Dog、Cat、lion がある場合、そのメソッドを makeNoise() と呼び、bark または meow... それぞれ受け取ります。しかし、その名前を尋ねて、それに応じて取得してみませんか?