| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Непонятно наслед-ие если ссылка на объект от родит |
| Автор: Alexanp 19.4.2016, 16:06 | ||||
Пример:
Подскажите чайнику как создается экземпляр класса BC: BaseClass BC = new DerivedClass(); Вопрос: BC - это ссылка на экземпляр класса BaseClass или DerivedClass ? А этот экземпляр типа DerivedClass состоит из поля A и B. Так ведь ? Что будет если написать BC=(DerivedClass)BC; ? После этой операции ведь все равно не доберешься до поля B (типа BC.B - ошибка) ? ВС была переменной типа BaseClass. А что стало с этой переменной в результате такой операции ? Или ничего этот код не делает ? И еще Можно ли говорить что мы можем управлять экземпляром, созданным по коду BaseClass BC = new DerivedClass(); с помощью переменной BC ? Т.е. мы обращаемся к полям экземпляра посредством переменной BC. Но т.к. BC имеет тип BaseClass, то управление экземпляром получается какое-то урезанное. Мы не можем написать BC.B. Но сделав некое "приведение типа" мы что-то можем. Вопрос: а что это такое "приведение типа" ? Это выражение ? Оно что-то возвращает ? И еще: Если поля в базовом классе и в производном имеют одинаковые имена, например
Здесь экземпляр-объект будет иметь два поля с именем A. Так ? Как через переменную DC добраться до поля A от родительского класса ? |
| Автор: chupachups 20.4.2016, 10:51 | ||||||||||||||
Нужно хотя бы вопросы нумеровать !
DerivedClass, но в представлении класса BaseClass - доступны только члены этого класса.
Внутри памяти - да, внутри кода - нет.
Ничего не будет, переменная не поменяет своего типа.
Да. Чтобы добраться до В надо писать: (BC as DerivedClass).B; - это и есть "приведение типа"
Да.
Проверь код:
Получишь: BC.A = 5 DC.A = 3 Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Neponyatno-nasled-iye-esli-ssylka-na-obyekt-ot-rodit-id57162defae20150d358b4567#findElement_E7045_57173510ae20153e5df9a037_0 |