После создания объекта дочернего класса вы не можете типизировать его в суперкласс.Просто посмотрите на приведенные ниже примеры
Допущения: Dog - это дочерний класс, который наследуется от Animal (SuperClass)
Normal Typecast:
Dog dog = new Dog();
Animal animal = (Animal) dog; //works
Неправильный Typecast:
Animal animal = new Animal();
Dog dog = (Dog) animal; //Doesn't work throws class cast exception
Следующий Typecast действительно работает:
Dog dog = new Dog();
Animal animal = (Animal) dog;
dog = (Dog) animal; //This works
Компилятор проверяет синтаксисво время выполнения содержимое фактически проверяется