我有三個類。爲什麼這個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