Student student1, student2;
student1 = new
Undergraduate(); // ok
student2 = new
Graduate(); // ok
Graduate student3;
student3 = student2; // compilation
error
student3 = (Graduate) student2; // explicit cast, ok
student3 = (Graduate) student1; // compilation ok, run-time error