I have three classes.
Person <-- Student <-- GradStudent
, where <--
means extends (ie, GradStudent extends Student, Student extends Person)
Person person = new Student(); // this is perfectly legal
GradStudent gradStudent = (GradStudent) person;
System.out.println(gradStudent); // java.lang.ClassCastException here
Why? Our person variable is a Student, and we could do Student s = new GradStudent(), and so why is this not working?
Similarly if I do
Student student = new Student();
GradStudent aGradStudent = (GradStudent) student;
System.out.println(aGradStudent); // same error here
Why can we do Student s = new GradStudent(), but we cannot do Student student = new Student(), and THEN GradStudent aGradeStudent = (GradStudent) student