|
Модераторы: Partizan, gambit |
|
gogzor |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 134 Регистрация: 21.9.2006 Репутация: нет Всего: нет |
Привет всем.
В процессе изучения принципов ООП , понял всё , кроме полиформизма... Прочитал кучу описаний , но там всё написано слишком замороченым языком. Объясните мне пожалуйста попроще : что такое полиформизм , с каким-нибудь простеньким примером. Я просто хочу чётко понять ЧТО ЭТО , ДЛЯ ЧЕГО он используется и КОГДА. Заранее благодарен. |
|||
|
||||
Able |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 82 Регистрация: 13.6.2006 Где: Тюмень Репутация: нет Всего: 2 |
Если кратко , то это то, что позволяет по разному использовать один и тот же метод в "новых" унаследованных классах (производных классах) т.е. "для переопределения поведения производных классов" [Троелсен Э. C# и .NET, 168-170].
Это сообщение отредактировал(а) Able - 12.2.2008, 21:48 |
|||
|
||||
gogzor |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 134 Регистрация: 21.9.2006 Репутация: нет Всего: нет |
Как это использовать один метод по разному? У него же функция одна.
Override тут я так понимаю не причем? |
|||
|
||||
Able |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 82 Регистрация: 13.6.2006 Где: Тюмень Репутация: нет Всего: 2 |
Еще как причем но это классический полиморфизм.
Так же существует понятие абстрактного класса и метода. А тебе что конкретно не понятно с полиморфизмом? давай твой пример где ты чего то не понял? Это сообщение отредактировал(а) Able - 12.2.2008, 22:14 |
|||
|
||||
Raid |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 10.6.2007 Где: Москва Репутация: нет Всего: нет |
Залил лекцию и практическое занятие по теме полиморфизм. Если вдумчиво прочитаешь, то наверняка разберешься Посмотри
|
|||
|
||||
Legolas |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 229 Регистрация: 14.2.2007 Репутация: 3 Всего: 5 |
gogzor, существует несколько методов использования полиморфизма: я использую полиморфизм методом переопределения и методом перегрузки. я тебе могу скинуть лекцию из инста про полиморфизм - там очень доходчиво это всё расписывается, куча примеров с подробнейшими комментами.
лекция - http://slil.ru/25466740 если не поймешь пиши здесь - попробую объяснить. Добавлено через 4 минуты и 20 секунд класс!!! одно и тоже скинули |
|||
|
||||
gogzor |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 134 Регистрация: 21.9.2006 Репутация: нет Всего: нет |
Спасибо за отличную лекцию!
Начинаю понимать. Если что , отпишусь. |
|||
|
||||
gogzor |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 134 Регистрация: 21.9.2006 Репутация: нет Всего: нет |
Люди.
Вот скажите : Я создал интерфейс. Прописал там нужный метод . Потом в каждом классе , где я реализую этот интерфейс , этот метод переопределяется по своему , это же тоже принцип полиморфизма - многоформенности? |
|||
|
||||
FractalizeR |
|
|||
Опытный Профиль Группа: Участник Сообщений: 273 Регистрация: 27.12.2007 Где: Россия/Москва Репутация: нет Всего: 4 |
Полиморфизм в том, что при вызове этого метода, в зависимости от типа экземпляра будут вызваны разные реализации этого метода. Так что, в принципе, вы правы.
Это сообщение отредактировал(а) FractalizeR - 16.2.2008, 23:05 -------------------- Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя. |
|||
|
||||
source777 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
gogzor, самое понятное определение полиморфизма:
"Полиморфизмом называется свойство некоторых веществ существовать в нескольких кристаллических фазах, отличающихся по симметрии структуры и по свойствам. Каждая из этих фаз, стабильная в определенной области температур и давлений, называется полиморфной модификацией." (с) Шаскольская М.П. Применительно к программированию это переводится как: "Полиморфизмом называется свойство некоторых объектов в зависимости от внешних условий вызывать различные полиморфные модификации определенного метода" -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Able |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 82 Регистрация: 13.6.2006 Где: Тюмень Репутация: нет Всего: 2 |
на пример ВОДА... лед, жидкость, пар а вещество одно и тоже...
gogzor, да так... |
|||
|
||||
source777 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
Впрочем классический пример полиморфизма - это белое и серое олово, причем такой полиморфизм называют ещё аллотропией, т.к. один химический элемент в соединении. Аллотропия - частный случай полиморфизма, если аллотропные модификации имеют одинаковую хим.формулу (эквивалент для программирования - сигнатура метода)... Так что наличие методов с разной сигнатурой, но одним именем (проще говоря, перегруженных), правильнее называть аллотропией, а не статическим полиморфизмом, как это принято Это сообщение отредактировал(а) source777 - 20.2.2008, 22:45 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Exception |
|
||||
Эксперт Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 1 Всего: 186 |
Вы чего-то всё усложняете. Полиморфизм -- это когда мы общаемся с некоторым базовым методом, не волнуясь о том, переопределён ли он в дочерних классах и что на самом деле делает.
Пример: все животные (класс Animal) умеют издавать звуки (метод MakeSound), но при этом разные животные -- по-разному (переопределённые версии MakeSound в дочерних классах). В данном случае мы объявим MakeSound как абстрактный метод (то есть у него вообще нет реализации), и реализуем его в дочерних классах:
Вся фишка полиморфизма заключается в том, что теперь нам необязательно знать, какой именно класс используется, чтобы вызвать базовый метод, потому что вызвана будет именно переопределённая версия:
Это сообщение отредактировал(а) Exception - 25.2.2008, 01:34 |
||||
|
|||||
SKrivosein |
|
|||
Идущий в даль Профиль Группа: Участник Сообщений: 271 Регистрация: 9.6.2007 Где: Praha - Прага Репутация: 4 Всего: 8 |
А ещё так с интерфейсами...
полиморфизм через интерфейсы подержуют и независимые от себя классы. Авторские права на зверьё у Exception Это сообщение отредактировал(а) SKrivosein - 27.2.2008, 03:09 |
|||
|
||||
SKrivosein |
|
|||
Идущий в даль Профиль Группа: Участник Сообщений: 271 Регистрация: 9.6.2007 Где: Praha - Прага Репутация: 4 Всего: 8 |
||||
|
||||
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |