|
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 378
|
|||||||||||
Супер класс. Почему так?03.07.2023, 11:09. Показов 1038. Ответов 10
Привет народ. Помогите плиз, объясните, простыми словами в чем отличие...
Есть родительский класс Car Есть дочерний класс Truck в Main
в Main
Если можете объясните пожалуйста, чем проще тем лучше. Просто не могу понять логику, в каком случае нужно прописывать Car bmw = new Truck();, а в каком Truck bmw = new Truck(); На что это влияет?
0
|
|||||||||||
| 03.07.2023, 11:09 | |
|
Ответы с готовыми решениями:
10
что лучше купить 9700к с 2060 супер или 3600 с 2070 супер?
|
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,218
|
|
| 03.07.2023, 11:25 | |
|
Мистер Джек, отличается типом переменной.
Тип переменной определяет набор доступных членов через эту переменную. В первом случае будут доступны только публичные члены типа Car, во втором - еще добавятся члены типа Truck. То есть, в общем случае для Truck их может быть больше.А еще это типизация - способ для компилятора выбирать перегрузку, если есть, например, перегрузки метода, принимающего эти параметры.
1
|
|
|
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 378
|
|
| 03.07.2023, 11:33 [ТС] | |
|
Простите, все равно не догоняю.
Car bmw = new Truck(); Мы используем общий класс, а выделим память под дочерний. А на практике как это? Вообще запутался.... Объясните попроще, для сверх чайников.
0
|
|
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,218
|
||||||
| 03.07.2023, 11:50 | ||||||
|
Знак равно в ЯП является оператором присваивания (assignment statement).
Слева от него - переменная определенного типа, которая может хранить, условно говоря, выражение (в данном случае ссылку на объект определенного типа) Справа - грубо говоря, выражение, которое создает объект определенного типа и возвращает ссылку на него. Таким образом происходит присваивание ссылки производного типа переменной базового типа. Почему так можно делать? - Потому что в языке C# разрешается неявное приведение переменной выражения своего типа, либо любого из производных типов. Добавлено через 1 минуту
1
|
||||||
|
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,553
|
|||||||
| 03.07.2023, 12:34 | |||||||
1
|
|||||||
|
|
|||||||
| 03.07.2023, 13:01 | |||||||
|
Не по теме: ЧТо же будет, когда дойдете до интерфейсов...
Теперь про переменные, скажем тот же Car bmw. Это исключительно ссылка на объект, указание адреса памяти, где хранится объект. Единственное ограничение которое накладывается на такую переменную -- объект должен либо быть Car, либо унаследован от него. (ну либо null, тогда мы никуда не указываем). Такая аналогия. Берем 10 пронумерованых коробок, которые будут выполнять роль ОЗУ. Сам в каждую коробку по кошке. Кошка -- объект. Он создан, находится в коробке и может мяукнуть. Теперь берем карточку и пишем на ней момер коробки, и скажем просто "коробка 1. кличка Соня". Это базовый класс. Теперь берем ещё одну карточку, и пишем на ней "коробка 1. кличка Соня. Кошка, 2 года, рыжая." Это класс наследник. Теперь заходит ветеренар, берет миску и первую карточку. Он видит что там написано только кличка и где найти кошку, но понять какой можно насыпать корм -- нельзя. Теперь он берет вторую карточку, и видит что это 2 летняя зараза, а значит её можно насыпать обычного корма. Но если нам нужнопросто подозвать кошку по кличке, нам подходят обе карточки.
1
|
|||||||
|
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 378
|
|
| 03.07.2023, 13:03 [ТС] | |
|
Спасибо всем. Я имею введу...
Car bmw = new Truck(); - в этом случае мы можем использовать поля и методы классов Car, Truck Truck bmw = new Truck(); - в этом случае мы можем использовать поля и методы класса только Truck Car bmw = new Car(); - а в этом тогда случае что получаем? можем использовать поля и методы только класса Car? Правильно? Или я что то путаю. Просто Truck bmw = new Truck(); наследует у Car - в итоге и поля и методы можно использовать а тут Car bmw = new Truck(); путаница... Может есть у кого-нибудь ссылка, что бы объяснили мне непонимающему, зачем писать Car bmw = new Truck(); если можно всегда писать Truck() bmw = new Truck(); или Car bmw = new Сar();
0
|
|
|
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,553
|
|||
| 03.07.2023, 13:26 | |||
Car, так как декларируемый тип - Car, хотя фактический тип - Truck.
1
|
|||
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
|
| 03.07.2023, 15:46 | |
|
1
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||||||||||
| 03.07.2023, 18:46 | ||||||||||||
|
В данном примере — для демонстрации работы полиморфизма. В реальной ситуации конкретный тип присваиваемого значения может быть либо неизвестен:
3
|
||||||||||||
|
|
||
| 03.07.2023, 19:50 | ||
|
1
|
||
| 03.07.2023, 19:50 | |
|
Помогаю со студенческими работами здесь
11
Как в IntelliJ IDEA посмотреть методы которые могут быть перегружены из супер класса в класс наследник
Програма почему-то выдает x=7. Почему так не знаю но должно выдать 216 Скажите почему например флешка на 4 ГБ а на ней ёмкость всего 3.73 ГБ почему это так? Почему при создании игры Lode Runner потребовалось 19 000 текстур? почему так много? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|