явное преобразование от суперкласса к подклассу

public class Animal {
    public void eat() {}
}

public class Dog extends Animal {
    public void eat() {}

    public void main(String[] args) {
        Animal animal = new Animal();
        Dog dog = (Dog) animal;
    }
}

Назначение Dog dog = (Dog) animal; не генерирует ошибку компиляции, но во время выполнения генерирует исключение ClassCastException . Почему компилятор не может обнаружить эту ошибку?

140
задан itsjeyd 12 February 2014 в 09:35
поделиться