Эти строки кода недопустимы:
y = x;
y = new Car();
Так как это работает?
Когда вы объявляете переменную типа Car
, это Переменная может быть любой машиной (например, Ford или Ferrari).
Но когда вы объявляете переменную типа Ford
, эта переменная может быть любой Ford car
, как автомобиль Ford Mustang. Но это никогда не может быть Ferrari.
Кроме того, это законно:
Car a = new Ford();
Ford b = (Ford) a;
Потому что a
это Автомобиль, но его можно кастовать как Форд, потому что это также Форд.
Конечно, это недопустимо:
Car c = new Ferrari();
Ford d = (Ford) c;
Этот код можно скомпилировать. Но у вас будет ClassCastException, потому что c
не является Ford.
Надеюсь, это поможет