Класс наследования расширяется - PullRequest
0 голосов
/ 09 февраля 2020

Класс Ford расширяет класс Car. Какие из следующих выражений являются законными?

Car x = new Car();
Ford y = new Ford();
x = y;
y = x;
y = new Car();
x = new Ford();

1 Ответ

2 голосов
/ 09 февраля 2020

Эти строки кода недопустимы:

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.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...