|
5 / 5 / 0
Регистрация: 28.02.2013
Сообщений: 121
|
|
Множественное наследование в С#29.03.2013, 20:59. Показов 7232. Ответов 14
Метки нет (Все метки)
0
|
|
| 29.03.2013, 20:59 | |
|
Ответы с готовыми решениями:
14
Множественное наследование Множественное наследование.
|
|
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
|
|
| 29.03.2013, 21:07 | |
|
SlavaStas, можно только много интерфейсов имплиментировать.
Или вопрос в том как обойтись без этого в конкретном случае?
0
|
|
|
5 / 5 / 0
Регистрация: 28.02.2013
Сообщений: 121
|
|
| 29.03.2013, 21:08 [ТС] | |
|
nrv, про интерерфейы я в Шилде прочитал, но так и не понял, как это делается? Тоесть, я пишу интерфейс, в котор опысываю методы, а потом пишу, скажем, три класса, в которых делаю реализацию этих методов? при чем, в одном классе я пишу чатсть методов, в другом часть, а в третьем, который наследуется от этих двух, я описываю заново методы всех трех классов?
0
|
|
|
Master of Orion
|
|
| 29.03.2013, 21:13 | |
|
SlavaStas, интерфейс - это то же самое, что и абстрактный класс, но он не содержит никаких полей - только сигнатуры методов. Ну и как следствие их можно наследовать сколько угодно. Так решается вопрос о ромбовидном наследовании и некоторые другие баги. Например интерфейс
IEnumerable<T> содержит всего 1 метод GetEnumerator. Но этого достаточно, чтобы обходить свой класс с помощью foreach, позволять ему учавствовать в LINQ-запросах и тд
0
|
|
|
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
|
|
| 29.03.2013, 21:16 | |
|
SlavaStas, если наследуемся от класса, то метод реализовывать не обязательно (если не абстрактный) (и вообще это уже будет называться сокрытием или переопределением). Даже если этот метод является реализацией какого-то интерфейса.
0
|
|
|
Master of Orion
|
||||||
| 29.03.2013, 21:19 | ||||||
|
SlavaStas, вот конкретный пример:
nrv, вам вопрос на засыпку все массивы реализуют интерфейс IList, в котором содержатся метод Add, Insert, RemoveAt, свойство Count и тд... Но массив не содержит этих методов. Вопрос: как так?
0
|
||||||
|
5 / 5 / 0
Регистрация: 28.02.2013
Сообщений: 121
|
||||||
| 29.03.2013, 21:26 [ТС] | ||||||
|
Psilon, nrv, вы все так умно расписали, спасибо, но я все равно мало что понял
![]() смотрите, вот на конкретном примере: мне нужно создать иерархию классов с полями: Автор (фамилия, имя) Файл (название, расширение, дата создание, размер, атрибут) Документ (файл, автор, ключевые слова) ну там еще несколько классов, но то не важно, пойму тут - дальше сам разберусь... так вот, на сколько я понимаю, в С++ это делается следующим образом:
Добавлено через 2 минуты Psilon, то есть все методы мне надо описывать, исходя из моего примера, в классе Document, а файл и автор сделать интерфейсами?
0
|
||||||
|
Master of Orion
|
|||||||||||
| 29.03.2013, 21:29 | |||||||||||
|
SlavaStas, наследование аналогично таковому в природе. Если в программировании мы говорим, что класс B наследует от класса A, это означает, что B это A (что кстати легко в коде проверить операцией is).
То есть мужчина наследует от класса человек, потому что мужчина ЭТО человек. Женщина наследует от класса человек, потому что женщина ЭТО человек Магазин не может наследовать от книги, потому что магазин ЭТО НЕ КНИГА в вашем случае документ не может наследовать от писателя, потому что ДОКУМЕНТ НЕ ПИСАТЕЛЬ В вашем случае
А вот сделать автора и файл полями никто не мешает. Иерархии тут никакой нет и быть не может. В самом крайнем случае документ может наследовать класс файла и иметь дополнительное поле Писателя. То есть
0
|
|||||||||||
|
5 / 5 / 0
Регистрация: 28.02.2013
Сообщений: 121
|
|
| 29.03.2013, 21:32 [ТС] | |
|
Psilon, я понимаю, но в данном случае, это задание лабораторной работы... здание довольно странное, но препод древний как динозавры, так что ему, к сожалению, предъявить нечего... Могу вам написать все задание, может предложите что как наследовать...
0
|
|
|
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
|
|
| 29.03.2013, 21:32 | |
|
SlavaStas, просто сделай писателя полем в документе. Да и файл тоже(хотя что такое файл в данном контексте и документ не очень понятно)
А.. препод .. ну пиши в каждом классе свою реализацию.. Psilon, Про явную реализацию я слышал, но разве есть какие-то противоречия с моим постом?
0
|
|
|
5 / 5 / 0
Регистрация: 28.02.2013
Сообщений: 121
|
|
| 29.03.2013, 21:42 [ТС] | |
|
Psilon, ладно, я в принципе пока так и сделал, думал может как по другому можно. Спасибо.
А с интерфейсами, я все же не доконца понял. То есть если сделать интерфейс ІА с классом А и интерфейс ІВ с классом В, потом класс С с наследованием этих интерфейсов, то методы, которые я описал в А и В не надо описывать в С? Или для А и В в одном интерфейсе можно записать методы, а сами классы тоже наследовать от этого интерфейса и потом там описать в каждом классе свои методы? да, и как быть с конструкторами тих классов?
0
|
|
|
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
|
|
| 29.03.2013, 21:45 | |
|
0
|
|
|
5 / 5 / 0
Регистрация: 28.02.2013
Сообщений: 121
|
|
| 29.03.2013, 21:47 [ТС] | |
|
nrv, смысл тогда от этих классов и интерфейса, если не нужно их прямое использование в программе?
0
|
|
|
51 / 38 / 5
Регистрация: 14.01.2012
Сообщений: 127
|
|
| 29.03.2013, 22:06 | |
|
В этой не нужно. Вообще нужно для того чтобы использовать вытекающий из этой иерархии полиморфизм.
Т.е. , например, можно типом параметра в методе указать интерфейс. Избитые коллекции - хороший пример, т.к со всеми ними мы работает примерно одинаково, но устроены они по разному
0
|
|
| 29.03.2013, 22:06 | |
|
Помогаю со студенческими работами здесь
15
Множественное наследование наоборот
Множественное наследование альтернатива Множественное наследование и дружественные классы
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|