У меня есть этот код:
package Maven_test.Maven_project_test;
public class Test {
class A {
int i = 10;
}
class B extends A {
int j = 20;
}
class C extends B {
int k = 30;
}
public void pruebaJerarquia() {
A a = new B();
B b = (B) a;
C c = (C) b;
System.out.println(c.k);
}
}
, и я хотел бы знать, почему эта строка:
C c = (C) b;
выдает это исключение при выполнении программы:
Exception in thread "main" java.lang.ClassCastException:
Maven_test.Maven_project_test.Test$B cannot be cast to
Maven_test.Maven_project_test.Test$C
at Maven_test.Maven_project_test.Test.pruebaJerarquia(Test.java:21)
at Maven_test.Maven_project_test.App.main(App.java:10)
Я думаю, что это как-то связано с апскейтингом и спадом, но я не понимаю.Может быть, потому, что «b» указывает на «a», а «C c = (C) b» - это все равно что пытаться разыграть что-то подобное?
C c = new A();
Спасибо!