我有三个类。为什么这个java casting失败
Person <-- Student <-- GradStudent
,其中<--
手段延伸(即GradStudent扩展学生,学生扩展人)
Person person = new Student(); // this is perfectly legal
GradStudent gradStudent = (GradStudent) person;
System.out.println(gradStudent); // java.lang.ClassCastException here
为什么?我们的人变量是一个学生,我们可以做学生s =新的GradStudent(),为什么这不起作用?
同样的,如果我这样做
Student student = new Student();
GradStudent aGradStudent = (GradStudent) student;
System.out.println(aGradStudent); // same error here
我们为什么能做到学生S =新GradStudent(),但我们不能做学生学生=新的学生(),然后GradStudent aGradeStudent =( GradStudent)学生
Java中始终允许向上转换,它是隐式的,也是因为子类与尊重替换原则的子类型不同。 – BetaRunner