Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
27.02.2004, 18:28
|
|||
|---|---|---|---|
Полиморфизм и другие анонизмы.... |
|||
|
#18+
Есть следующий код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Код: plaintext 1. 2. Автор в книге http://www.books.ru/shop/books/31350 пишет: Что-бы ListBox унаследованный от Window смог создать свой public virtual void Sort(), в том случае когда у Window тоже есть подобный метод, нужно добавить слово "new". Это вроде как всё понятно. Но после он говорит (стр.133), что "...и тогда этот метод не будет переопределять виртуальный метод класса Window". Вот здесь у меня непонимание. Если он не переопределят, тогда что-же он делает? Однозначно, что не наследует. Пример выше как раз показывает что именно переопределяет. Так класс Button унаследованный от ListBox наследует именно преопределённый метод ListBox-а. Может тут просто с терминами что-то напутано. Ваши комментарии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2004, 20:35
|
|||
|---|---|---|---|
|
|||
Полиморфизм и другие анонизмы.... |
|||
|
#18+
вместо public new virtual void Sort() надо public new override void Sort() (так наверное) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2004, 23:07
|
|||
|---|---|---|---|
|
|||
Полиморфизм и другие анонизмы.... |
|||
|
#18+
Книжку, Кгижку почитай. (moderated) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2004, 23:34
|
|||
|---|---|---|---|
Полиморфизм и другие анонизмы.... |
|||
|
#18+
авторнадо public new override void Sort() Это вызовет ошибку, так делать нельзя. А насчёт new – я так понимаю, что тут никакого полиморфизма уже не будет, это просто другой метод с тем же именем, что и у класса-родителя Пример полиморфизма Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Если же мы изменим код так Код: plaintext то вывод будет уже не такой - w1.Write(); // вывод One ((OneWordWriter)w2).Write(); // вывод Two words ((OneWordWriter)w3).Write(); ---->>>> // вывод Two words ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2004, 23:44
|
|||
|---|---|---|---|
Полиморфизм и другие анонизмы.... |
|||
|
#18+
что интересно, если добавить вот такой класс Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. и написать так - ((OneWordWriter)w4).Write(); и так ((ThreeWordsWriter)w4).Write(); вывод будет соответственно Two words Four words written тут вспоминаются VMT и приходит мысль, что цепочка полиморфическая просто рвётся с помощью new, а добавив new virtual мы порождаем новую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=20&tablet=1&tid=1439500]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 347ms |

| 0 / 0 |
