Допутим у меня есть иреархия классов. Во главе иерархии стоит класс А, за ним 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; // нельзя
Комментариев нет:
Отправить комментарий