Так почему же я могу отличить родительский класс как ребенок, но не наоборот?Проблемы наследования JAVA - это отношение между родительским и дочерним классами
Когда я устанавливаю объект родительского класса в child и наоборот, свойства не копируются почему?
public class senior {
private int a = 6;
public int getA() {
return a;
}
public int x = 1;
}
class junior extends senior {
public junior() {
super();
}
public int x = 0;
}
public class runner {
public static void main(String[] args) {
senior S = new senior();
junior J = new junior();
senior S1 = new senior();
junior J1 = new junior();
int b = J.getA();
System.out.println(b);
S = J; // aliasing ?
// J 0 S 1
System.out.println(S.x); // should print 0 but prints 1
System.out.println(J.x);
J1 = (junior) S1; // Senior cannot be cast to junior, why?
System.out.println(S1.x);
System.out.println(J1.x);// should print 1 but prints 0
}
}
Возможный дубликат [Что такое переменная тень, используемая в классе Java?] (Http://stackoverflow.com/questions/1092099/what-is-variable-shadowing-used-for-in-a-java- класс) – Axel
Это легко - потому что Junior IS-A Senior, но это не так, наоборот. Родительские классы не имеют понятия о дочерних классах. – duffymo
«Юниор» не является «старшим», но каждый «старший» - «младший» + некоторый опыт. – Andrew