public class Test3 {
public static void main(String[] args) {
Derived04 b = new Derived04();
Base04 a = (Base04)b;
System.out.println(a.i);
System.out.println(a.f());
}
}
class Base04 {
int i=1;
public int f() {return i;}
}
class Derived04 extends Base04 {
int i = 2;
public int f(){return -i;}
}
Оба класса включают метод f (), поэтому, когда я приводю d к a, какой метод он делает go, когда я вызываю af ()? Я думаю, так как a объявлен как тип Base04, когда вы делаете ai, он дает 1, но тогда почему он использует метод из подкласса?