почему выводятся разные поля классов?
public class Solution {
int i = 0;
public static class B extends Solution {
int i = 1;
}
public static void main(String[] args){
Solution f = new B();
B d = new B();
System.out.println(f.i);
System.out.println(d.i);
}
}
Ответы (1 шт):
Автор решения: Вадим
→ Ссылка
К счастью, а может и к сожалению в Java нельзя переопределять значения поля (на самом деле вы просто создаете новое поле с таким же именем), как это делается с методами. Поэтому если тип переменной Solution то и поле будет браться из реализации Solution.
public class Solution {
int i = 0;
int get(){
return i;
}
public static class B extends Solution {
int i = 1;
int get(){
return i;
}
}
public static void main(String[] args) {
Solution f = new B();
B d = new B();
System.out.println(f.i);
System.out.println(d.i);
System.out.println("-----------");
System.out.println(f.get());
System.out.println(d.get());
}
}