Страницы

Поиск по вопросам

среда, 5 декабря 2018 г.

Расширение и сужение типов

Допутим у меня есть иреархия классов. Во главе иерархии стоит класс А, за ним B, C и тд. Наследуются друг от друга. Уместно ли будет делать такое? A obj = new B(); //(Расширение) B obj = new A(); //(Сужение)


Ответ

Нельзя наследнику присвоить предка. Только если Вы предку (указателю на объект-предок) заранее присвоили указатель на объект-потомок, то обратное присваивание выполнять можно.
UPD
class A { ... }
class B extends A { ... }
... B b = new B(); A a = b; // можно B c = (B) a; // можно
A a1 = new A(); B b1 = a1; // нельзя

Комментариев нет:

Отправить комментарий