![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
осваиваю С#.
столкнулся с такой проблемой: есть базовый абстрактный класс. есть наследники от этого класса. есть интерфейс. проблема в том, что я чет не могу понять как прикрутить интерфейс к одному из наследников базового класса. в базовый прикрутить по-идее нельзя, т.к. он является абстрактным и не должен содержать реализованных методов. обьясните пожайлуйста, как можно такое реализовать? желательно с простеньким примерчиком ![]() разобрался сам, вдумчиво почитав шилдта ![]() оказалось все элементарно
Это сообщение отредактировал(а) uwannadie - 9.12.2009, 18:47 --------------------
|
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
это интерфейс не может содержать реализацию, а базовый(абстрактный) класс как раз может.
Это сообщение отредактировал(а) Экскалупатор - 9.12.2009, 20:31 |
|||
|
||||
uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
если мне не изменяет память, то абстрактный класс содержит лишь прототипы свойств, методов и событий, а реализуются они уже непосредственно в классах-наследниках --------------------
|
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
uwannadie, изменяет. абстрактный класс может содержать реализацию.
пример:
при создании объекта класса chaild будут доступны оба метода и оба будут работать. |
|||
|
||||
uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
мда, наворотили они в шарпе ###...
--------------------
|
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
почему? по моему все логично. иначе какой смысл было бы делать такую штуку как интерфейс? а так есть интерфейс, который не может содержать реализацию, и наследование интерфейса не создает (как бы сказать) структуры, т.е. мы фактически ничего не наследуем, при наследовании интерфейса, кроме того какие методы должны быть в классе наследнике. т.е. это как контракт который должен подписать класс наследник, для того что его можно было использовать везде где используется этот интерфейс. при этом сама реализация этих методов интерфейс не навязывает, а абстрактный класс напротив, может содержать часть общей реализации своих потомков, и по этому его наследование каждый раз дает потомка этого класса который наследует реализацию предка, и переопределяет для себя некоторые его методы(т.е. получаем структуру классов в результате).
т.е. наследую интерфейс мы каждый раз должны переопределять все его методы, а наследую абстрактный класс только ту часть которая нужна нам. как то так я себе это все представляю. может кто по лучше объяснит. да, кстати, есть еще одно различие. класс не может наследовать несколько абстрактных классов, но может наследовать несколько интерфейсов. Это сообщение отредактировал(а) Экскалупатор - 9.12.2009, 21:56 |
|||
|
||||
Jamon |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 1.9.2007 Репутация: нет Всего: нет |
мне кажется, можно объяснить проще - интерфейс показывает _поведение_ класса, который реализует этот интерфейс. Не зря некоторые стандартные интерфейсы называются с окончанием ...able (IComparable - "Способный сравниваться", IEnumerable - "Способный перечисляться" и т.п.)
Это сообщение отредактировал(а) Jamon - 11.12.2009, 16:22 |
|||
|
||||
uwannadie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 5.6.2009 Где: Крым, Керчь Репутация: нет Всего: 1 |
я разницу знаю между абстрактным классом и интерфейсом, да и вобще между классами и интерфейсами.
просто я перехожу постепенно с делфей. а там это реализовано немного иначе. --------------------
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |