![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Alexanp |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.4.2016 Репутация: нет Всего: нет |
Пример:
Подскажите чайнику как создается экземпляр класса 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 |
|
||||||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 15.10.2008 Репутация: нет Всего: 1 |
Нужно хотя бы вопросы нумеровать !
DerivedClass, но в представлении класса BaseClass - доступны только члены этого класса.
Внутри памяти - да, внутри кода - нет.
Ничего не будет, переменная не поменяет своего типа.
Да. Чтобы добраться до В надо писать: (BC as DerivedClass).B; - это и есть "приведение типа"
Да.
Проверь код:
Получишь: BC.A = 5 DC.A = 3 Этот ответ добавлен с нового Винграда - http://vingrad.com |
||||||||||||||
|
|||||||||||||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |