|
1 / 1 / 0
Регистрация: 15.11.2013
Сообщений: 49
|
|
Правила создания объектов в сишарп?17.10.2016, 11:33. Показов 4103. Ответов 29
Подскажите при создании объекта:
Person p1 = new Person Person p2 = new Employee Employee p3 = new Employee После new мы указываем класс, экземпляром котоого будет объекты p1,2,3. Зачем указывать - Person перед p1,2, и Employee перед p3? что это такое в коде? в приведённом коде класс Employee это наследник Person. если я правильно понял, то это тип объекта, но что это такое тип объекта? и как тип объекта у p2 может быть Person, если это экземпляр Employee. изначально, я думал, что это просто правило записи создания нового объекта, т.е. перед названием и после слова new надо указывать Имя класса, и думал, что они должны быть одинаковы. в справочниках и поиске не нашёл ничего по запросу - что определяет тип объекта в сишарп
0
|
|
| 17.10.2016, 11:33 | |
|
Ответы с готовыми решениями:
29
Правила создания БД Правила размещения объектов в памяти
|
|
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
|
||
| 17.10.2016, 14:09 | ||
|
0
|
||
|
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
|
||
| 17.10.2016, 14:10 | ||
|
arh, Это как спрашивать: "А когда использовать молоток и гвоздь, чтоб повесить картину, а когда саморез с шуруповертом?". И приводить примеры частных случаев с просьбой объяснить. Нужно понять соль этих инструментов и тогда станет понятно причина их применения. пс. Последнее предложение относится не к молотку с шуруповертом.
0
|
||
| 17.10.2016, 14:24 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 15.11.2013
Сообщений: 49
|
||||
| 17.10.2016, 14:36 [ТС] | ||||
|
я не понимаю, - это же форум, здесь спрашивают если что-то непонятно, почему же тогда так тяжело объяснить простейшие вещи - в каких случаях, конкретно вы используете приведение к базовому типу и почему... проще пареной репы должно быть для программиста, если писать умеет. я спросил, поскольку на том ресурсе, где я изучаю сишарп, написано, что так можно делать, а зачем не написано, по результатам работы кода примера, видно что при базовом типе результат изменённого метода скрывается без применения слова override в классе наследнике
0
|
||||
|
Заблокирован
|
||
| 17.10.2016, 14:51 | ||
|
Почему? Потому что животных много разных, одни приходят, другие уходят, новые появляются. Но каждый по-своему реализует базовый метод "ПроситьЕды". В программе я вызываю по ссылке на базовый класс и не парюсь о том, какой реально объект лежит в памяти. Вот конкретный случай. Все понятно? Расходимся? Добавлено через 8 минут Но и для этой задачи нет "надо". Хочешь используй наследование и полиморфизм, хочешь - не используй. Невозможно найти однозначный ответ там, где его нет. Программирование это не шуруповерт, а рисование. Нет однозначного ответа, когда взять одни краски, а когда другие. Это дело художника. Добавлено через 2 минуты arh, ну, или возьми этот самый классический наиклассический затасканный пример с "Фигура", наследник - Тругольни и Круг. Та же байда. Решать можно и по-другому.
0
|
||
|
1 / 1 / 0
Регистрация: 15.11.2013
Сообщений: 49
|
||||
| 17.10.2016, 14:56 [ТС] | ||||
|
Добавлено через 1 минуту
0
|
||||
|
Заблокирован
|
|||
| 17.10.2016, 14:59 | |||
|
Нет, зоопарк никак не включен в иерархию животного. Он содержит в себе конктейнер ссылок на Животных.
Добавлено через 1 минуту
1
|
|||
|
[Bicycle Reinventor]
|
|||||||
| 17.10.2016, 15:43 | |||||||
1
|
|||||||
|
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
|
|||||||
| 17.10.2016, 15:52 | |||||||
|
Ок, пример. Я пишу игровой движок. Обычная 2д игра. У меня есть базовый класc GameObject, есть метод Draw. В классе движка есть коллекция объектов List<GameObject> objects. Также есть метод Update, который вызывается постоянно при перерисовке. В нем мы ко всему прочему проходимся по списку objects и вызываем метод Draw. Все просто, все работает. Но! Нам нужно создавать другие объекты, например, игрок, твердое тело, монета и т.п.. В итоге нам бы пришлось иметь отдельно списки всех этих типов и по ним проходиться вызывая Draw. Но с помощью наследования мы можем писать так:
void Сollision(GameObject obj), который вызывается при столкновении объектов. Мы так же в методе Update проходимся по всему списку objects и "где надо" вызываем этот метод. Но он будет разным для каждого типа объектов, по этому мы его переопределяем при описании классов игрока, земли и т.п.. И теперь, когда мы вызываем метод Сollision у типа GameObject, к которому мы приводили наши новые типы при добавлении в список objects, вызовется уже переопределенный новый метод. Так же класс GameObject должен быть абстрактным (выше уже советовал почитал об абстракции) и содержать абстрактные методы Draw и Сollision. Пример теоретический , на практике граф наследования стоило бы сделать куда длиннее и витиеватее. Да и сам подход к движку не лучший. Это я к тому, вдруг кто решит на основе этого что-то писать
1
|
|||||||
|
[Bicycle Reinventor]
|
||
| 17.10.2016, 17:22 | ||
Отсюда вывод - хоть носки и разные, но объявлены базовым классом, значит, их оба можно одеть на ноги. А не на руки, как варежки.
1
|
||
| 17.10.2016, 17:22 | |
|
Правила создания тем в данном разделе. Читать обязательно! Задайте правила эффективного использования кеша для статических объектов Разные правила в nginx для редиректов и создания ЧПУ для каждого поддомена и основного домена Последовательность создания объектов Ошибка создания объектов! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|