Разное

Пример полиморфизм: Полиморфизм для начинающих / Хабр

Содержание

Язык С++. Полиморфизм

 Полиморфизм – свойство, которое позволяет использовать одно и тоже имя функции для решения двух и более схожих, но технически разных задач. Полиморфизм –  возможность замещения методов объекта родителя методами объекта-потомка, имеющих то же имя.

Полиморфизм по-гречески означает «много форм». Объекты, имеющие общего предка, могут принимать разные формы, оставаясь при этом схожими.

Чтобы использовать полиморфизм, необходимо чтобы:

1)      все классы-потомки являлись наследниками одного и того же базового класса

2)      функция, реализующая метод,  должна быть объявлена виртуальной в базовом классе

Виртуальным называется метод, ссылка на который вычисляется на этапе выполнения программы.

Доступ к обычным методам через указатели

Рассмотрим пример, когда базовый и производные классы содержат функции с одни и тем же именем, и к ним обращаются с помощью указателей, но без использования виртуальных функций:

A, B, Base – это типы. Указатели на объекты производных классов совместимы по типу с указателями на объекты базового класса.

Base *ptr;     ptr=&a;           ptr=&b;        

Однако, указатели производных классов между собой не совместимы!

 Пример:

 A *ptr;    ptr=&a;

               ptr=&b;      // указатель класса A не совместим с указателем класса B!!! 

 Теперь необходимо понять, какая собственно функция выполняется в этой строчке

Это функция Base::show()  или A::show()  или B:show()?

Результат выполнения дает простой ответ

Base

Base

 Всегда выполняется метод базового класса. Компилятор  не смотрит на содержимое указателя, а выбирает метод, определяемый типом указателя!!

Доступ к виртуальным методам через указатели

Сделаем одно маленькое изменение в нашей программе: поставим ключевое слово virtual  перед объявлением функции show() в базовом классе.

На выходе имеем:

Class A

Class B

Теперь выполняются методы производных классов. Один и тот же вызов ставит на выполнение разные функции в зависимости от содержимого указателя  ptr.

Если метод в базовом классе объявлен как виртуальный, то компилятор выбирает  метод по содержимому указателя, а не по типу указателя, как было в первом примере.

Абстрактные классы и чисто виртуальные методы

Базовый класс, объекты которого никогда не будут реализованы называется абстрактным классом. Такой класс может существовать с единственной целью – быть родительским классом к производным классом, объекты которых будут реализованы.

Для того чтобы сделать базовый класс абстрактным, достаточно ввести в класс хотя бы одну чисто виртуальную функцию.

Чисто виртуальная функция – это функция, после объявления которой добавлено выражение =0.

 

Пример: Объявить абстрактный класс person. Объявить два производных класса – student и teacher. В каждом из классов объявить метод, с помощью которого можно создать список выдающихся педагогов и студентов. Студентов со средним баллом больше 4 и педагогов с числом публикаций более 50 статей считать выдающимися.

Подведем итоги:

  1.  Полиморфизм позволяет использовать одно и то же имя функции для решения двух и более схожих, но технически разных задач.
  2. Если метод в базовом классе объявлен как виртуальный, то компилятор выбирает  метод по содержимому указателя, а не по типу указателя.
  3. Чтобы сделать базовый класс абстрактным, достаточно ввести в класс хотя бы одну чисто виртуальную функцию.
  4. Если  в базовом классе объявлена чисто виртуальная функция, в производных классах объявление чисто виртуальных функций запрещено.

 

Полиморфизм, шмолиморфизм… / Хабр

Я думаю всем уже окончательно заморочили голову бесконечные статьи про полиморфизм, но меня они достали тоже и я решил… написать свою.

Прежде всего основной принцип (о котором писатели всех предыдущих статей забывают напрочь): KISS. Почему-то для объяснения базовых концепций считается необходимым привлечения двух-трёх языков программирования (обычно неизвестных читателю), парочки двухстраничных примеров и т.п.

Это хороший способ если вы хотите показать свою крутизну на интервью — его иногда даже могут положительно оценить. Хотя я лично вряд ли бы поставил подобному кандидату высокую оценку. Ибо это обозначает просто-напросто что либо человек занимается самолюбованием (не очень хороший вариант), либо он действительно не умеет выражать свои мысли (ещё худший вариент).

Базовые концепции нужно уметь объяснять без привлечения языков программирования вообще! Второй этап — показать как базове концепции используются в том или ином языке программирования. Но это — уже другая история.


Итак. Давайте попробуем рассказать человеку программисту не знающему ни одного, известного вам, языка программирования (ну например он всю жизнь использовал только FORTRAN-66) о полиморфизме.

Начнём сначала. С объектов. Что такое объект в ООП? Это абстракция, позволяющая описывать большие программы. Мы группируем данные и код обработки этих данных в некоторую сущность под названием «объект». Зачем мы это делаем? Ну… чтобы программа казалась выглядящей проще. Человеку свойственно антропоморфизировать всё подряд (не верите — посмотрите мультфильмы) и ему кажется что программа составленная из таких маленьких «человечков» будет понятнее чем миллион не связанных друг с другом формул. Конечно когда мы пишем программы мы не моделируем человека достаточно подробно: если наш маленький человечек призван следить за состоянием принтера или банковского счёта, то нам, в общем, всё равно какого цвета у него глаза и даже не важно — какого пола этот воображаемый человечек. Мы наделяем его только самой рудиментарной памятью (скажем человечек, обслуживающий принтер может помнить сколько на этом принтере было распечатано страниц, а человечек, обслуживающий банкоский счёт будет помнить сколько на этом счету денег) и беспокоимся только о паре элементарных операций (скажем «принтерный человечек» может распечатать на бумаге текст — или вернуть ошибку если у принтера кончилась бумага, а «счетоводный» человечек может снять денег со счёта — или вернуть ошибку если их там нет).

Отлично. Теперь мы знаем что такое объект (знаем понятие, но не его реализацию в каком-либо языке программирования — хотя я уверен человек работавший 40 лет с FORTRAN66 выдаст вам десяток способов реализации подобной концепции). Пойдём дальше. Разумеется наш человечек будет бороться за своё рабочее место и на попылки «залезть к нему в стол» и изменить количество денег на счету будет обижаться и либо не давать это сделать, либо хадрить и плохо работать впоследствии. Этот принцип называется «инкапсуляцией»: за своё состояние каждый человечек отвечает сам. Иногда этот принцип полезно нарушить: скажем аудитору (в программировании обычно называемому инспектором) бывает полезно предоставить исключительные права для выполнения его работы, но если он ими злоупотребит (скажем снимет все деньги со счёта и сбежит), то вся программа может рухнуть.

Дальше. Полиморфизм. Обычно вторым руководящим принципом ООП считается наследование, но на самом деле полиморфизм — вещь куда более простая. Этот принцип просто-напросто гласит что резюме работника не совпадает с самим работником. Скажем если писатель нанимает человека, который будет записывать его гениальные мысли — то его не волнует как именно «писарь» это будет делать: стенографируя на бумаге, используя печатную машинку или высекая текст на камне. Главное чтобы он это делал достаточно быстро. Конечно это может интересовать компанию, с которой у писателя договор (то есть программиста, пишущего программу) ибо лист бумаги дешевле, чем обработанный камень. Но это уже другая история. Есть языки со статической реализацией когда резюме и список умений работника должны существовать явно и их соответствие проверяется ещё до того, как фабрика будет построена и динамические языки — там и формальное понятие «резюме» может отсуствовать! Хотя обычно у программиста, пишущего программу, какие-то резюме на листках бумаги всё равно образуются.

Замечательно. Что же такое наследование? Ну тут тоже никаких секретов нет: не всегда удобно готовить себе работника «с детского сада» (то есть писать класс/прототип/etc с нуля). Иногда проще взять уже готового работника и доучить его немного. Скажем если нашему гениальному писателю потребуется человек, который может не только записывать гениальные мысли, но и зарисовывать дизайны замков, в которых происходит действие то может оказаться лучше взять какого-нибудь писаря и научить его рисовать оные замки. Правда тут могут оказаться неожиданности. Выяснится что писарь имеет какие-то свои «тараканы в голове». Ну например по команде «взять в ручи руки ручку и подготовиться к письму» он берёт ещё и чистый лист бумаги и разлиновывает его — а на планах замков такие линейки нежелательны. Чем больше циклов переучивания (чем «выше» дерево наследования) — тем больше шансов на появление странных накладок. В идеале было бы хорошо использовать только «специально обученных работников», которых отбирают по резюме — но это может оказаться очень дорого. Научить токаря протирать детали спецраствором может оказаться гораздо проще, чем создать нового специалиста, который умеет и точить детали и протирать их тряпочкой.

На закуску. Что такое абстрактный класс? Это класс (класс в школьном смысле — место, где людей чему-то учат), выпускающий полуфабрикат. Не специалистов, а недоучившихся специалистов. Он учился-учился, но научился только включать-выключать станок. А вот обрабатывать детали (точить их или фрезеровать) — он ещё не умеет. Большинство языков программирования (разумеется только тех где есть формальные резюме) позволяют описывать только «классы для подготовки» таких специалистов. Выпустить недоспециалиста нельзя, но можно добавить ещё один класс в «школу подготовки молодого бойца» и выпустить токаря. Или другой — с целью подготовки фрезеровщика. Ну а абстрактная функция — это та самая функция, которой класс не учит. Но он может уже объяснить специалисту что делать после того, как он научится этой функции — скажем не обучив его обработке деталей он может объяснить как обработать ящик деталей: взять из входного лотка первую деталь, обработать её (этому вы научитесь позже), положить в лоток обработанную деталь, повкторить до исчерпания входного лотка… Все предупреждения про переучивание специалистов остаются в силе: если классы будут плохо согласованы между собой… ну вы же учились в школе, правда?

Ещё хотите. Ну давайте. Про виртуальные функции. Что такое — виртуальные функции? Ну это просто функции объектов. На самом-то деле виртуальные функции никакими особенностями не обладают. Особенностями обладают НЕвиртуальные функции. Это — попытка «всё ускорить и улучшить», приводящая к проблемам. Действительно: человечки выглядят хорошо на бумаге, но программа-то выполняется на компьютере! А он довольно туп. Выполняет с десяток элементарных операций (сложение, вычитание, etc), а всему остальному его нужно учить. Что это означает для нашего подхода? Это значит что если нам нужно попросить «специалиста по работе на станкам» выключить станок, то компьютеру нужно «посмотреть ему в голову», понять как он выключает станки и, собственно, это сделать. А если операция выключения станка очень проста? Мы больше времени потратим на поиск данных в голове у специалиста! И зачастую операция выключения станка для всех станков одинакова. Крайняя кнопка слева. Возникает «гениальная» идея: давайте увидев что нам нужно выключить станок, на котором работал специалист наживать крайнюю кнопку слева. Так работает невиртаульная функция: она смотрит на резюме человека — и решает что нужно делать в том или ином случае. Всё будет работать. Более того, если появится хитрый сверлильный станок с кнопкой выключения справа, то всё будет нормально если мастер, управляющий цехом, будет знать что это она имеет дело со сверлильным станком и специалистом, работающим на нём. Но вот если команда выключить станки поступит от пожарной инспекции, которая не знает о таких тонкостях… она попросит всех специалистов выключить станки, они все нажмут крайнюю левую кнопку (помните — мы решили «не смотреть специалисту в голову» для ускорения работы программы), в том числе так сделает человек, управляющий сверлильным станком… треск, шум, гам, «программа выполнила недопустимую операцию и будет закрыта»…

Ну а невиртуальный деструктор — это просто невиртуальная функция, которая увольняет нашего специалиста. Понятно что функции, которая так сильно влияет на специалиста уж сам бог велел быть виртуальной, но… что если у него других невиртуальных функций нет? Это ж нужно будет «в голове у специалиста» организовать целый раздел со списком функций и его обработкой — и всё ради одной функции! Иногда это кажется перебором и если у объекта нет никаких виртуальных функций то и его деструктор делают невиртуальным. Обычно переучивать таких специалистов — себе дороже…

Вот примерно и всё. А как эти принципы использовать на практике и в том или ином языке программирования — это уже другой вопрос. В программах на PHP очень часть бывают полиморфными классы работы с базами данных: у разных баз данных свои заморочки (скажем чтобы положить в базу «Hello, world!» в кавычках нужно иногда использовать insert («»»Hello, World!»»»), а иногда insert(«\»Hello, World\»»), но 90% функциональности ведь совпадают!

P.S. Для тех кто хочет посмеяться над проблемами, порождаемыми наследованием подборка приколов (наводка тов. Stepanow). Обратите внимание на то, что почти все проблемы вызваны «тараканами в голове» от «неполного переучивания» при наследовании…

Как привести словесный пример полиморфизма? — Хабр Q&A

Полиморфизм бывает трёх типов: параметрический, ad-hoc и полморфизм подтипов.

Параметрический полиморфизм нужен чтобы писать логику, параметризованную типами, реализующими некоторые интерфейсы (вырожденный случай — параметризованные любыми типами). Простейший пример: функция map, применяющая функцию к каждому элементу массива. Без полиморфизма мы бы писали отдельную функцию для каждого типа:

mapIntFloat :: (Int -> Float) -> [Int] -> [Float]
mapIntFloat f [] = []
mapIntFloat f (x:xs) = (f x) : (map f xs)

mapIntString :: (Int -> String) -> [Int] -> [String]
mapIntString f [] = []
mapIntString f (x:xs) = (f x) : (map f xs)
-- и так далее

Выходит довольно громоздко и налицо повторение логики в каждой функции вида mapTypeType. Чтобы избежать повторения логики, параметризуем функцию map относительно типов исходного массива и массива, получаемого в результате:

map :: forall a b. (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = (f x) : (map f xs)

Теперь вместо конкретных типов вроде Int или Float у нас переменные типов: a и b.

Окей, но если копнуть глубже, оказывается, что логика, похожая на map для массивов, применима и к другим типам. Например, к optional-значениям. Без ad-hoc полиморфизма мы напишем что-то типа:

mapList :: forall a b. (a -> b) -> [a] -> [b]
mapList f [] = []
mapList f (x:xs) = (f x) : (mapList f xs)

mapMaybe :: forall a b. (a -> b) -> Maybe a -> Maybe b
mapMaybe f Nothing = Nothing
mapMaybe f (Just x) = Just (f x)

Видно, что логика везде примерно одна и та же, сигнатуры совпадают с точностью до параметризванного типа. Вот для этих случаев и нужен ad-hoc полиморфизм:

class  Functor f  where
    map :: (a -> b) -> f a -> f b

Мы параметризовали нужную нам логику относительно параметризованного типа f и теперь можем писать реализации для конкретных типов:

instance  Functor Maybe  where
    map f Nothing = Nothing
    map f (Just x) = Just (f x)

instance  Functor [] where
    map f [] = []
    map f (x:xs) = (f x) : (map f xs)

Сама функция map теперь имеет тип:

map :: forall f a b. Functor f => (a -> b) -> f a -> f b

Теперь мы можем писать функции, которые работают с любыми функторами, то есть опять-таки сократить повторение логики в коде.

Наконец, полиморфизм подтипов — это несколько другой подход к предыдущей проблеме. Вместо выделения общего интерфейса мы создаём базовый тип и наследуем от него остальные. В этом случае Functor будет абстрактным классом с абстрактным методом map, от которого наследуются типы Maybe, List и т.д. В таком случае сигнатура функции, принимающей и возвращающей функтор, будет выглядеть примерно так: foo :: Functor Int -> Functor String.

ПОЛИМОРФИЗМ — Большая Медицинская Энциклопедия

Полиморфизм в генетике

Полиморфизм в генетике (греч. polymorphos многообразный) — термин, обозначающий проявление индивидуальной, прерывистой изменчивости живых организмов. Первоначально он широко использовался для обозначения любой прерывистой изменчивости внутри вида (напр., каст общественных насекомых, возрастных отличий в окраске, полового диморфизма и др.), однако позже такие различия стали называть полифенизмом, а термином «полиморфизм» в соответствии с определением, данным английским генетиком Фордом (E. В. Ford), обозначать наличие в одной и той же популяции двух или более хорошо различимых форм, способных появляться в потомстве одной самки и встречающихся с частотой, достаточно высокой для того, чтобы исключить поддержание самой редкой из них повторно возникающими мутациями. Понятие «полиморфный» следует также отличать от понятия «политипический», к-рое обозначает сложные таксономические категории (напр., политипический вид — вид, представленный двумя или более подвидами, и т. п.).

Поскольку дискретные признаки организма контролируются, как правило, аллельными генами или блоками тесно сцепленных генов, так наз. супергенами (см. Ген), то некоторые исследователи предлагают под генетическим П. подразумевать наличие в популяции двух или более аллелей (см.) одного локуса (см.), встречающихся достаточно часто.

Полиморфизм затрагивает любые особенности фенотипа на любом уровне, в т. ч. на клеточном и молекулярном. Напр., хорошо известен П. эритроцитарных антигенов у человека (группы крови), структуры хромосом — инверсии, дупликации, добавочные хромосомы (см. Хромосомный полиморфизм).

В конце 60-х — начале 70-х гг. 20 в. благодаря разработке чувствительных методов, гл. обр. различных методов электрофореза (см.), в популяциях животных и человека обнаружен еще более широкий П. по генам, ответственным за синтез белков крови и других тканей, который присущ почти трети всех изученных генных локусов, кодирующих синтез белков как ферментной, так и неферментной природы (см. Изоферменты).

Биологическое значение такой широкой наследственной изменчивости популяций и видов до конца не расшифровано, и по этому вопросу существует две точки зрения. Согласно одной из них биохим. П. поддерживается в популяциях благодаря отбору, т. е. имеет приспособительное значение, согласно другой — биохимический Полиморфизм должен быть отнесен к категории селективно-нейтральной изменчивости. Тем не менее существует множество достоверных фактов, свидетельствующих об исключительном значении явления генетического П. для биологии и медицины. Постоянное присутствие в популяции с достаточно высокой частотой двух или более дискретных форм — генотипов (см.) — означает, что такой П. поддерживается за счет преимущественного отбора гетерозигот. Примером этого может служить полиморфизм гемоглобина, широко распространенный в популяциях людей азиатского и африканского происхождения и приводящий к заболеванию, известному под названием серповидно-клеточной анемии (см.). Анемия связана с гомозиготностью по гену s, который обусловливает образование аномального гемоглобина. Гомозиготы ss погибают вскоре после рождения. Однако стало известно, что высокая частота этого гена в популяциях сохраняется благодаря тому, что гетерозиготы Ss менее поражаются малярией, чем гомозиготы SS. В условиях постоянного присутствия в окружающей среде возбудителя малярии в популяциях поддерживается устойчивое соотношение всех трех генотипов — SS, Ss и ss, так наз. сбалансированный полиморфизм.

Аналогичный или похожий механизм лежит в основе поддержания П. групп крови и различных белков в популяциях человека, что наряду с другими доказательствами подтверждается также открытием корреляции (ассоциаций) между той или иной группой крови и устойчивостью к определенным заболеваниям. Напр., среди больных язвой желудка и двенадцатиперстной кишки группа крови О встречается соответственно на 10 и 17% чаще, чем среди остальной части популяции. Частота группы крови А достоверно выше у больных нек-рыми формами анемии и сахарного диабета. Недавно показана также определенная роль полиморфизма тканевых антигенов в устойчивости организма человека к нек-рым заболеваниям.

Каждый индивидуум обладает уникальным генотипом в отношении групп крови и белков, и эта уникальность отражается на его физических и физиологических особенностях, в т. ч. и на устойчивости к заболеваниям как экзогенной, так и эндогенной природы. Очевидно, что связь между полиморфным состоянием гена и его функциональной ролью не всегда носит столь ярко выраженный специфический характер, как в случае серповидноклеточной анемии, а гораздо чаще определяется некоей интегральной структурой генотипа по совокупности многих полиморфных генов, контролирующих неспецифическую биологическую устойчивость организма.

Т. о., хотя не все в явлении генетического П. окончательно выяснено, его анализ позволяет изучать генетические процессы в популяциях различных видов животных и человека и решать важные вопросы, связанные с их происхождением, эволюцией и адаптацией к окружающей среде. Генетический П. позволяет также использовать группы крови и электрофоретические варианты белков в качестве генетических маркеров для решения ряда задач судебной медицины (напр., при идентификации генотипов с помощью исследования образцов крови и других биол, жидкостей, при доказательстве монозиготности близнецов, при решении вопросов о спорном отцовстве и др.), для составления оптимальных схем трансплантации органов и тканей, для обнаружения связей между генотипом и устойчивостью к различным заболеваниям. Следует, однако, указать, что генетическое «содержание» вида не сводится к одной лишь изменчивости и что наряду с П. необходимо учитывать явление генетического мономорфизма, когда вид в целом представлен лишь одним, преобладающим генотипом, а частота вариантных форм не превышает вероятности повторного мутирования.

Имеются указания на то, что мономорфное состояние гена определяется его важной функциональной ролью в организме, в связи с чем многие вновь возникающие мутации соответствующих генов, как правило, отметаются отбором на ранних онтогенетических стадиях. Если же носители таких мутаций выживают, то они оказываются пораженными наследственными болезнями (см.), относящимися к категории так наз. врожденных нарушений обмена веществ.

Полиморфизм в патологии

Полиморфизм в патологии (греч. polymorphos многообразный) — многообразие структурных проявлений патологического процесса в органах, тканях и клетках.

В общей патологии Полиморфизм наблюдается при компенсаторно-приспособительных процессах, возникающих на различных этапах развития болезни. Компенсаторные процессы (см.) весьма разнообразны и обычно развиваются в отдельных системах, органах и тканях организма. Напр., при регенерации костной ткани в зоне перелома костная мозоль может быть представлена как волокнистой соединительной тканью, так и костно-хрящевыми структурами. Кроме того, П. отмечается при метаплазии тканей (см. Метаплазия) и в процессе организации (см.). В частной патологии П. проявляется в изменчивости морфологической картины ряда заболеваний (туберкулеза, крупозной пневмонии и др.) под влиянием естественных и индуцированных факторов (см. Патоморфоз). В частности, течение крупозной пневмонии может начинаться со стадии красного опеченения или серого опеченения, а в нек-рых случаях она носит мигрирующий характер. Чаще понятие «полиморфизм» используют для морфол, характеристики опухолевого роста.

Различают тканевой, клеточный и ядерный П. Тканевой П., характеризующийся различным соотношением паренхимы и стромы, встречается, напр., в условиях хронического воспаления, при к-ром вследствие дистрофии (см. Дистрофия клеток и тканей) и регенерации (см.) выявляются разнообразные клеточные элементы, большее или меньшее количество сосудов различного калибра. Тканевой П., напр, при циррозе печени, проявляется развитием неравномерных прослоек фиброзной ткани, среди к-рых располагаются скопления гепатоцитов различной величины и формы. При микроскопическом исследовании опухолей, напр, аденокарциномы, обнаруживают железистые комплексы различной величины и формы. Так, при раке предстательной железы величина железистых комплексов варьирует в широких пределах, форма их разнообразна, часто с фестончатыми очертаниями и многочисленными бухтообразными выпячиваниями. Значительным разнообразием величины и формы обладают тяжи и гнезда опухолевых клеток при плоскоклеточном раке.

Клеточный П. характеризуется изменением структуры и функции клеток, в связи с чем они могут иметь различную величину и форму. Клеточный П. может наблюдаться при регенерации в результате неодинаковой зрелости клеток, при различных дистрофиях. В злокачественных новообразованиях опухолевые клетки обычно имеют различную величину и форму (чаще всего неправильную), в цитоплазме обнаруживают разнообразные включения (жировые вакуоли, фрагменты разрушенных ядер и др.).

Для ядерного Полиморфизма характерно появление ядер различной величины и формы, различных патологических форм кариокинеза. Так, в опухолевых клетках ядро может занимать почти всю цитоплазму или в части случаев бывает резко уменьшено в размерах. В связи с нарушениями митоза (см.) возникают гигантские многоядерные клетки. Ядра нек-рых клеток интенсивно окрашиваются, становятся гиперхромными. При гидропической дистрофии ядра клеток увеличены в объеме, округлой формы, с разреженной нуклеоплазмой. Иногда в ядрах имеют место признаки пикноза (см.). В условиях регенерации ядра могут приобретать неправильные очертания, в них отмечается перераспределение хроматина (см.). Часто в условиях регенерации и патологии обнаруживается П. внутриклеточных структур, таких как митохондрии (см.), эндоплазматическая сеть, лизосомы (см.).

Полиморфизм в химии

Полиморфизм в химии (греч. polymorphous многообразный) — способность одного и того же химического соединения или элемента образовывать в зависимости от внешних условий (температуры, давления и др.) различные кристаллические формы (модификации). П. объясняют способностью одних и тех же атомов или молекул образовывать различные кристаллические решетки, отличающиеся своей устойчивостью. Явление П. в химии открыто Мичерлихом (E. Mitscherlich) в 1821 г. П. наблюдается для простых веществ (так наз. аллотропия), для многих органических и неорганических соединений, а также для минералов. Примерами аллотропных простых веществ могут служить алмаз и графит, белый и фиолетовый (красный) фосфор и др. Примером П. хим. соединений могут служить кальцит и арагонит — полиморфные модификации карбоната кальция. Известны два основных вида Полиморфизма: энантиотропия (обратимые превращения) и монотропия (необратимые превращения).

Вещества, находящиеся в различных полиморфных модификациях, обладают разными физ.-хим. свойствами и разной биологической активностью; напр., рост гемофильных бактерий на синтетической среде, заменяющей кровь, происходит при наличии в среде гамма-Fe2O3, а в присутствии aльфа-Fe2O3 бактерии погибают.

Библиография

Полиморфизм в генетике

Алтухов Ю. П. и Рычков Ю. Г. Генетический мономорфизм видов и его возможное биологическое значение, Журн. общ. биол., т. 33, № 3, с. 281, 1972; Бочков Н. П. Генетика человека, М., 1978; Майр Э. Популяции, виды и эволюция, пер. с англ., М., 1974; Харрис Г. Основы биохимической генетики человека, пер. с англ., М., 1973; Эрлих П. и Холм Р. Процесс эволюции, пер. с англ., М., 1966; Сavаlli-Sfоrza L. L. a. Bodmer W. F. The genetics of human populations, San Francisco, 1971; Ford E. B. Polymorphism and taxonomy, в кн.: The new systematics, ed. by J. Huxley, p. 493, L., 1941.

Полиморфизм в патологии

Давыдовский И. В. Общая патология человека, с. 506, М., 1969; Струков А. И. и Серов В. В. Патологическая анатомия с. 159, М., 1979.

Полиморфизм в химии

Некрасов Б. В. Учебник общей химии, с. 382, М., 1981; Неницеску К. Общая химия, пер. с румын., с. 130, М., 1968.

Определение термина «полиморфизм» в биологии

Полиморфизм возникает, когда в одном виде существует несколько различных физических форм или типов особей. Возьмите, например, пяденицу березовую — ночное насекомое, которое часто используют учителя на уроках эволюционной биологии и естественного отбора. Эти мотыльки являются прекрасным примером полиморфизма в природе. Хотя две бабочки относятся к одному и тому же виду, они могут выглядеть совершенно отличными друг от друга.

Значение термина

В биологии полиморфизм (от греческого: «поли», что означает «много» и «морф», что означает «форма») может применяться к биохимическим, морфологическим и поведенческим характеристикам, но должен быть прерывистым. Это также общая вариация последовательности ДНК для группы населения.

Известны мономорфизм (присутствует только одна форма) и диморфизм (две), что же касается полиморфизма в биологии и генетике, то этот термин является очень специфическим. Он не распространяется на черты характера с непрерывным изменением, например на рост (хотя тот может быть наследуемым). Мочки уха либо сросшиеся, либо нет (полиморфизм с наследованием), а рост не имеет точно установленных меняющихся значений.

Полиморфизм — это выражение генетического разнообразия вида. Он дает каждому виду гибкость и возможность адаптации в окружающей среде. Кроме того, это базис для уровня населения, основанный на действии естественного отбора, приводящий к изменению частоты аллелей, а затем микроэволюции. Полиморфизм — это не только изменчивость, которую можно наблюдать в окружающей среде, но и разделение труда на эффективную социальную организацию и использование природных ресурсов. Во многих полиморфных видах социальная организация объединяет дискретных членов, сходных с гармонией, наблюдаемой среди разных органов одного биологического организма, обеспечивая тем самым благосостояние всего населения и вида в целом.

Типы полиморфизма

Основные типы явления: половой диформизм и аллельный полиморфизм.

Половой диморфизм возникает, когда обнаруживаются физические различия между мужскими и женскими членами одного и того же вида. К примеру, на фото ниже — самец и самка одного вида уток. Аллельный полиморфизм возникает, когда в популяции выражены множественные аллели. Это разные версии признаков или физических характеристик.

Адаптационный (переходный) полиморфизм происходит при наличии двух аллелей в генофонде. При этом один ген постепенно заменяет другой. Это связано с сильным воздействием окружающей среды, что стимулирует устранение одного аллеля из генофонда.

Сбалансированный полиморфизм происходит при наличии двух аллелей в генофонде. Частота их повторения при этом не меняется. Это обусловлено избирательным давлением, способствующим сосуществованию двух аллелей (гетерозиготное преимущество) посредством стабилизирующего отбора.

Примеры полиморфизма

Можно привести множество примеров полиморфизма в биологии. Это и различные типы крови человека (A, B, AB или O), и половой диморфизм (мужской или женский).

Прерывное разделение труда в колонии муравьев или пчел, таких как королева, репродуктивные самцы, рабочие, солдаты, также является одним из видов полиморфизма. Эта социальная организация гармонично объединяет отдельных членов, как если бы они были разными органами одного биологического организма.

Адаптационный: светлые и темные варианты расцветки пяденицы. Это направление отбора, определяемое окружающей средой.

Сбалансированный: серповидноклеточная анемия в африканских странах (гетерозиготы не усиливают анемию, но имеют устойчивость к малярии).

Генетический полиморфизм

Вариации в последовательности ДНК организма без какого-либо фенотипического эффекта называются нейтральными полиморфизмами. Примеры его могут включать однонуклеотидные полиморфизмы (SNP) и полиморфизмы длины рестрикционных фрагментов (RFLP). В SNP один из нуклеотидов кодона претерпевает изменения, не превращаясь в кодон различной аминокислоты. RFLP является полиморфизмом, как правило, из-за SNP, и характеризуется изменением длины последовательности ДНК.

Необходимо существование двух или более одинаково приемлемых альтернатив для классификации полиморфизма в биологии. Наименее распространенный аллель должен иметь частоту 1% или более. В ином случае он считается мутацией.

Полиморфизм — это… Что такое Полиморфизм?

        в физике, минералогии, химии, способность некоторых веществ существовать в состояниях с различной атомной кристаллической структурой. Каждое из таких состояний (термодинамических фаз), называется полиморфной модификацией, устойчиво при определённых внешних условиях (температуре и давлении). Модификации обозначаются обычно греческими буквами α, β, γ и т.д. Различие в структуре обусловливает и различие в свойствах полиморфных модификаций данного вещества. П. был открыт в 1798, когда было обнаружено, что СаСО3 может существовать в виде 2 минералов — Кальцита и Арагонита. П. обладают простые вещества (см. Аллотропия), а также неорганические и органические соединения. Так, углерод имеет 2 модификации: кубическую (Алмаз) и гексагональную (Графит), резко различающиеся по физическим свойствам. Белое Олово, имеющее тетрагональную объёмноцентрированную решётку — пластичный металл (См. Металлы), а серое олово (низкотемпературная модификация с алмазоподобной тетрагональной решёткой) хрупкий полупроводник. Некоторые соединения, например SiO2, имеют более 2-х полиморфных модификаций. Перестройка кристаллической решётки при полиморфном переходе сводится к сдвигам атомов, изменению типа их упаковки, к поворотам некоторых структурных группировок (например, NH4 и NO3 в разных модификациях NH4NO3). П. наблюдается и у жидких кристаллов (См. Жидкие кристаллы).
         П. является результатом того, что одни и те же атомы и молекулы могут образовывать в пространстве несколько устойчивых решёток. Т. к. любое малое искажение устойчивой решётки связано с увеличением её энергии, то существующие структурные состояния соответствуют энергетическим минимумам различной глубины (см. рис.). При Т = 0 К, наиболее вероятна α-модификация, которой отвечает глубокий минимум. При Т > 0 К термодинамическое состояние решётки определяется её свободной энергией U = Е — TS, включающей в себя наряду с энергией Е энтропийную часть TS (S — Энтропия), связанную с тепловыми колебаниями кристаллической решётки (См. Колебания кристаллической решётки). Имеющая меньшую энергию более прочная (α-решётка менее восприимчива к возбуждению колебаний и характеризуется более пологой зависимостью U (T). Кривые Uα(T) и Uβ(T) пересекаются при некоторой температуре T0. Ниже T0 более стабильна α-фаза, выше — β-фаза, T0 — температура равновесия α- и β-фаз. При нагреве α-модификация выше T0 она превращается в β. При дальнейшем повышении температуры (β-модификация может стать менее стабильной, чем γ-модификация, которая, в свою очередь, затем превращается в δ-модификацию до тех пор, пока температура не превысит температуру плавления кристалла.
         Каждая модификация устойчива в определённой области температуры, давления, а также др. внешних условий. Фазовые диаграммы равновесия определяют области устойчивости полиморфных модификаций (см. Диаграмма состояния). Теоретический расчёт фазовых диаграмм основан на вычислении термодинамических характеристик, а также энергии и спектра колебаний кристаллической решётки для различных полиморфных модификаций. Например, расчёт диаграммы состояния С позволил установить, что область возникновения структуры алмаза лежит при давлениях Полиморфизм50 кбар, что облегчило путь к синтезу алмазов.
         Переход менее стабильной модификации в более стабильную связан с преодолением энергетического барьера, который существенно меньше, если превращение происходит постепенно, путём зарождения и последующего роста в ней областей новой фазы. Барьер преодолевается за счёт тепловых флуктуаций; поэтому, если вероятность флуктуаций мала, менее устойчивая фаза может длительное время существовать в метастабильном состоянии. Например, алмаз, метастабильный при атмосферном давлении и комнатной температуре, может существовать неограниченно долго, не превращаясь в стабильный в этих условиях графит. В других веществах, наоборот, различные модификации легко переходят друг в друга при изменении температуры и др. Поскольку превращение проходит через стадию сосуществования исходной и образующейся фаз, между фазами возникает упругое взаимодействие, влияющее на развитие превращения. Эти взаимодействия особенно проявляются при мартенситных превращениях (См. Мартенситное превращение).

         Частный случай П. — политипизм, который наблюдается в некоторых кристаллах со слоистой структурой. Политипные модификации построены из одинаковых слоев или слоистых «пакетов» атомов и различаются способом и периодичностью наложения таких пакетов. Политипные модификации наблюдаются у глинистых минералов, карбида кремния и др.

         Лит.: Верма А. Рам., Кришна П., Полиморфизм и политипизм в кристаллах, [пер. с англ.], М., 1969; Бокий Г. Б., Кристаллохимия, 3 изд., М., 1971.

         А. Л. Ройтбурд.

        

        а — изменение свободной энергии U кристалла при изменении взаимного расположения атомов, минимумы соответствуют двум устойчивым модификациям α и β; б — зависимость U от температуры.

        в биологии, наличие в пределах одного Вида резко отличных по облику особей, не имеющих переходных форм. Если таких форм две, явление называется Диморфизмом (частный случай — Половой диморфизм). П. включает различие внешнего облика особей из одной или разных популяций (См. Популяция). П. в пределах генетически однородной популяции известен для колоний многих гидроидов (См. Гидроиды), у которых на одном столоне могут развиваться гидранты разного строения (например, трофозоиды, дактилозоиды и акантозоиды — у полипов Podocoryne). Имеющие совершенно различный облик полипы и медузы одного вида — пример П., связанного с чередованием поколений (См. Чередование поколений). Такого же типа П. ржавчинных грибов, у которых плодовые тела и споры, развивающиеся на разных хозяевах, резко отличны по облику и по физиологическим особенностям. Такой П., как и многообразие личиночных форм одного вида, например у дигенетических сосальщиков, называется плейоморфозом. П. у раздельнополых животных — наличие особей разного облика в пределах хотя бы одного пола (например, у тлей самки, а у некоторых кокцид самцы бывают крылаты и бескрылы). Для общественных насекомых характерен П., связанный с разделением функций разных особей в семье или колонии (матка и рабочие особи у медоносных пчёл; матки и разные формы «рабочих», а также «солдаты» у муравьев и термитов). К такому же роду П. можно отнести сезонный П., а также связанные с плотностью популяции различия в окраске, пропорциях тела и в поведении у саранчовых (фазовая изменчивость) и гусениц некоторых бабочек. См. также Генетический полиморфизм, Модификации.

        

         Лит.: Майр Э., Зоологический вид и эволюция, пер. с англ., М., 1968; Шеппард Ф. М., Естественный отбор и наследственность, пер. с англ., М., 1970.

         М. С. Гиляров.


Полиморфизм металлов: суть, определение, примеры

Когда один элемент может существовать в виде нескольких простых веществ с разными свойствами и характеристиками, это называется аллотропией, или полиморфизмом. У металлов такая способность тоже имеется. Некоторые из них могут изменять свою структуру и качества под действием определенных факторов, что порой очень полезно в промышленности и других сферах. О том, какие металлы обладают полиморфизмом и как это проявляется, мы и расскажем.

Разные формы одного

Аллотропия – это явление, при котором один химический элемент может образовывать несколько разновидностей простых веществ. Они могут существенно отличаться друг от друга по своим физическим и химическим свойствам, но при этом состоять они будут из атомов одно и того же вида. Например, графит и алмаз совершенно не похожи: они имеют разный цвет, твердость, структуру, но оба состоят из атомов углерода.

Такие варианты называются аллотропными модификациями, а появляются они благодаря различному порядку расположения частиц в кристаллических решетках или различному строению молекул. Так, молекула из двух атомов оксигена (О2) образует простое вещество кислород, но если атомов оксигена в ней будет три (О3), то возникнет вещество озон.

Понятие «аллотропия» в научную терминологию ввел Йенс Якоб Берцелиус в 1841 году, после того как обнаружил, что винная и виноградная кислоты имеют одинаковый состав, но отличаются свойствами. Сегодня известно больше 400 модификаций, среди которых есть как неметаллы, так и металлы. Термин «аллотропия» применяют ко всем простым веществам, не привязываясь к их агрегатному состоянию. В отношении твердых веществ, причем как простых, так и сложных, употребляется термин «полиморфизм».

Явление полиморфизма металлов

Аллотропия – это распространенное явление, но характерно оно далеко не для всех элементов. Способность образовывать модификации зависит от внутреннего строения самого атома, и присуща тем элементам, которые изменяют свою валентность под действием внешних условий.

У металлов полиморфизм проявляется преимущественно под воздействием температур. Если нагреть вещество до определенного значения, ионы и атомы в его кристаллической решетке начнут перестраиваться, изменяя свое положение относительно друг друга. В итоге вещество приобретет иные свойства и перейдет в другую модификацию.

Каждая новая форма обозначается строчной буквой греческого алфавита, которая через дефис присоединяется к названию элемента. Чем ниже температура, при которой образуется модификация, тем раньше в алфавите стоит буква.

Полиморфизм металлов нашел широкое применение в промышленности. Нередко это свойство веществ используется для создания прочных сплавов. К аллотропии склоны около 30 металлов. Температурная аллотропия характерна для олова, железа, урана, бериллия, титана, кобальта. Цинк, сурьма, цезий, ртуть, галлий, литий и кадмий переходят в другие формы под действием давления.

Железо

Fe, или железо, – один из самых распространенных элементов в земной коре. В таблице Менделеева он стоит под 26-м номером. В качестве простого вещества железо является светлым пластичным металлом с сильными магнитными свойствами. Оно часто применяется в различных сферах жизни, но в большинстве случаев используется в виде сплавов с углеродом, хромом, никелем, марганцем и другими металлами.

Полиморфизм железа проявляется в четырех формах:

  • Феррит (α-Fe) — до температуры в 769 °C. Обладает объемноцентрированной кубической решеткой и ферромагнетическими свойствами.
  • β-Fe – выше 769 °C. Обладает ведет себя как парамагнетик и отличается от феррита только некоторыми параметрами кубической решетки. Не всегда выделяется в отдельную модификацию и рассматривается как α-Fe.
  • Аустенит (γ-Fe) – выше 917 °C. Имеет гранецентрированную кубическую решетку, хуже феррита проводит ток и тепло, ведет себя как парамагнетик.
  • δ-Fe – выше1394 °C. Объемноцетрированная кубическая решетка.

Олово

В периодической таблице олово, или Sn, стоит под номером 50. Это легкий, блестящий, серебристо-белый металл, который хорошо поддается плавлению и ковке. Полиморфизм металла также проявляется при разных температурных режимах:

  • Серое олово (α-Sn) – ниже 13,2 °С. Кубическая решетка алмазного типа, вещество существует в виде серого порошка, проявляет себя как узкозонный полупроводник.
  • Белое олово(β-Sn) – выше 13,2 °С. Привычная форма олова единственная из всех модификаций имеет практическое применение и используется в промышленности. Обладает тетрагональной решеткой, при сгибании издает характерный хруст. При охлаждении превращается в α-Sn, теряя плотность и рассыпаясь. Этот процесс был назван «оловянной чумой».
  • (γ-Sn) – выше 161 °С. Имеет ромбическую решетку, характеризуется повышенной хрупкостью и плотностью.

Полиморфизм в Python (с примерами)

Что такое полиморфизм?

Буквальное значение полиморфизма — это условие возникновения в разных формах.

Полиморфизм — очень важное понятие в программировании. Это относится к использованию сущности одного типа (метода, оператора или объекта) для представления разных типов в разных сценариях.

Давайте возьмем пример:

Пример 1: Полиморфизм в операторе сложения

Мы знаем, что оператор + широко используется в программах на Python.Но у него нет одноразового использования.

Для целочисленных типов данных оператор + используется для выполнения операции арифметического сложения.

  число1 = 1
число2 = 2
печать (число1 + число2)
  

Следовательно, вышеуказанная программа выводит 3 .


Аналогично, для строковых типов данных оператор + используется для выполнения конкатенации.

  str1 = "Python"
str2 = "Программирование"
печать (str1 + "" + str2)
  

В результате вышеуказанная программа выводит Python Programming .

Здесь мы видим, что один оператор + использовался для выполнения различных операций с разными типами данных. Это одно из самых простых проявлений полиморфизма в Python.


Полиморфизм функций в Python

В Python есть некоторые функции, которые могут работать с несколькими типами данных.

Одной из таких функций является функция len () . Он может работать со многими типами данных в Python. Давайте посмотрим на несколько примеров использования функции.

Пример 2: Полиморфная функция len ()

  print (len ("Программиров"))
print (len (["Python", "Java", "C"]))
print (len ({"Имя": "Джон", "Адрес": "Непал"}))
  

Выход

  9
3
2
  

Здесь мы видим, что многие типы данных, такие как строка, список, кортеж, набор и словарь, могут работать с функцией len () . Однако мы видим, что он возвращает конкретную информацию о конкретных типах данных.

Полиморфизм в функции len () в Python


Полиморфизм класса в Python

Полиморфизм — очень важное понятие в объектно-ориентированном программировании.

Чтобы узнать больше о ООП в Python, посетите: Python Object-Oriented Programming

Мы можем использовать концепцию полиморфизма при создании методов класса, поскольку Python позволяет разным классам иметь методы с одинаковыми именами.

Позже мы сможем обобщить вызов этих методов, не обращая внимания на объект, с которым мы работаем. Давайте посмотрим на пример:

Пример 3: Полиморфизм в методах класса

  класс Cat:
    def __init __ (я, имя, возраст):
        я.name = имя
        self.age = возраст

    def info (self):
        print (f "Я кот. Меня зовут {self.name}. Мне {self.age} лет.")

    def make_sound (сам):
        print ("Мяу")


класс Dog:
    def __init __ (я, имя, возраст):
        self.name = имя
        self.age = возраст

    def info (self):
        print (f "Я собака. Меня зовут {self.name}. Мне {self.age} лет.")

    def make_sound (сам):
        print ("Кора")


cat1 = Кот («Китти», 2,5)
dog1 = Собака ("Пушистый", 4)

для животного в (cat1, dog1):
    животное.make_sound ()
    animal.info ()
    animal.make_sound ()
  

Выход

  Мяу
Я кот. Меня зовут Китти. Мне 2,5 года.
мяу
Лай
Я собака. Меня зовут Пушистый. Мне 4 года.
Лай
  

Здесь мы создали два класса: Cat и Dog . У них схожая структура и одинаковые имена методов info () и make_sound () .

Однако обратите внимание, что мы не создали общий суперкласс и не связали классы вместе каким-либо образом.Даже тогда мы можем упаковать эти два разных объекта в кортеж и выполнить итерацию по нему, используя общую переменную animal . Возможно за счет полиморфизма.


Полиморфизм и наследование

Как и в других языках программирования, дочерние классы в Python также наследуют методы и атрибуты родительского класса. Мы можем переопределить определенные методы и атрибуты специально для соответствия дочернему классу, который известен как , переопределение метода .

Полиморфизм позволяет нам получить доступ к этим переопределенным методам и атрибутам, которые имеют то же имя, что и родительский класс.

Давайте посмотрим на пример:

Пример 4: Переопределение метода

  из math import pi


форма класса:
    def __init __ (я, имя):
        self.name = имя

    область определения (self):
        проходить

    def fact (self):
        return «Я - двумерная фигура».

    def __str __ (сам):
        вернуть self.name


класс Square (Форма):
    def __init __ (self, length):
        super () .__ init __ ("Квадрат")
        self.length = длина

    область определения (self):
        вернуть себя.длина ** 2

    def fact (self):
        return «У квадратов каждый угол равен 90 градусам».


класс Круг (Форма):
    def __init __ (себя, радиус):
        super () .__ init __ ("Круг")
        self.radius = радиус

    область определения (self):
        return pi * self.radius ** 2


a = квадрат (4)
b = Круг (7)
печать (б)
печать (b.fact ())
print (a.fact ())
печать (b.area ())
  

Выход

  Круг
Я двухмерная фигура.
У квадратов каждый угол равен 90 градусам.153.93804002589985
  

Здесь мы видим, что такие методы, как __str __ () , которые не были переопределены в дочерних классах, используются из родительского класса.

Из-за полиморфизма интерпретатор Python автоматически распознает, что метод fact () для объекта a (класс Square ) переопределяется. Итак, он использует тот, который определен в дочернем классе.

С другой стороны, поскольку метод fact () для объекта b не переопределяется, он используется из родительского класса Shape .

Полиморфизм в родительских и дочерних классах в Python

Примечание : Перегрузка метода , способ создания нескольких методов с одним и тем же именем, но разными аргументами, в Python невозможен.

.

Полиморфизм в Python | Объектно-ориентированное программирование (ООП)

Полиморфизм определяет способность принимать различные формы. Полиморфизм в Python позволяет нам определять методы в дочернем классе с тем же именем, что и в их родительском классе. В этой статье мы подробно рассмотрим полиморфизм в Python в следующей последовательности:

Что такое полиморфизм?

Полиморфизм происходит от греческих слов Поли (много) и морфизм (формы). Это означает, что одно и то же имя функции может использоваться для разных типов.Это делает программирование более интуитивным и простым.

В Python у нас есть разные способы определения полиморфизма. Итак, давайте продвинемся вперед и посмотрим, как полиморфизм работает в Python.

Полиморфизм в Python

Дочерний класс наследует все методы родительского класса. Однако в некоторых ситуациях метод, унаследованный от родительского класса, не совсем подходит для дочернего класса. В таких случаях вам придется повторно реализовать метод в дочернем классе.

Существуют разные методы использования полиморфизма в Python.Вы можете использовать различные функции, методы класса или объекты для определения полиморфизма. Итак, давайте продолжим и подробно рассмотрим каждый из этих методов.

Полиморфизм с функцией и объектами

Вы можете создать функцию, которая может принимать любой объект с учетом полиморфизма.

Давайте возьмем пример и создадим функцию с именем « func () », которая будет принимать объект, который мы назовем «obj». Теперь давайте дадим функции что-нибудь сделать, чтобы использовать переданный нами объект « obj ».В этом случае давайте вызовем методы type () и color () , каждый из которых определен в двух классах «Tomato» и «Apple». Теперь вам нужно создать экземпляры классов Tomato и Apple, если их еще нет:

 class Tomato ():
     тип определения (сам):
       print («Овощ»)
     def color (self):
       print ("Красный")
класс Apple ():
     тип определения (сам):
       print ("Фрукты")
     def color (self):
       print ("Красный")
     
def func (obj):
       объекттип()
       obj.color ()
       
obj_tomato = Помидор ()
obj_apple = Apple ()
func (obj_tomato)
func (obj_apple) 

Вывод:

 Овощи
Красный
Фрукты
Красный 

Полиморфизм с методами классов

Python одинаково использует два разных типа классов. Здесь вам нужно создать цикл for, который перебирает кортеж объектов. Затем вы должны вызывать методы, не беспокоясь о том, к какому типу класса принадлежит каждый объект.Мы предполагаем, что эти методы действительно существуют в каждом классе.

Вот пример для демонстрации полиморфизма с классом:

 class India ():
     def capital (self):
       print («Нью-Дели»)

     def язык (сам):
       print ("хинди и английский")

класс США ():
     def capital (self):
       print ("Вашингтон, округ Колумбия")

     def язык (сам):
       print ("английский")

obj_ind = Индия ()
obj_usa = США ()
для страны в (obj_ind, obj_usa):
country.capital ()
country.language () 

Вывод:

 Нью-Дели
Хинди и английский
Вашингтон, Д.С.
Английский 

Полиморфизм с наследованием

Полиморфизм в python определяет методы в дочернем классе, которые имеют то же имя, что и методы в родительском классе. При наследовании дочерний класс наследует методы родительского класса. Кроме того, можно изменить метод дочернего класса, который он унаследовал от родительского класса.

Обычно используется в случаях, когда метод, унаследованный от родительского класса, не подходит для дочернего класса. Этот процесс повторной реализации метода в дочернем классе известен как переопределение метода.Вот пример, показывающий полиморфизм с наследованием:

 class Bird:
     def intro (self):
       print («Есть разные виды птиц»)

     def flight (self):
       print («Большинство птиц умеют летать, а некоторые - нет»)

класс попугай (Bird):
     def flight (self):
       print («Попугаи умеют летать»)

класс пингвин (Bird):
     def flight (self):
       print («Пингвины не летают»)

obj_bird = Птица ()
obj_parr = попугай ()
obj_peng = пингвин ()

obj_bird.intro ()
obj_bird.flight ()

obj_parr.вступление()
obj_parr.flight ()

obj_peng.intro ()
obj_peng.flight ()

 

Вывод:

 Есть разные виды птиц.
Большинство птиц умеют летать, но некоторые не умеют
Есть разные виды птиц
Попугаи умеют летать
Есть много видов птиц
Пингвины не летают 

Это разные способы определения полиморфизма в Python. На этом мы подошли к концу нашей статьи. Надеюсь, вы поняли, что такое полиморфизм и как он используется в Python.

Теперь ознакомьтесь с курсом Python Certification Training от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Сертификационный курс Python поможет вам получить опыт в количественном анализе, интеллектуальном анализе данных и представлении данных, чтобы выйти за рамки цифр, превратив вашу карьеру в роль Data Scientist.

Есть к нам вопрос? Пожалуйста, укажите это в комментариях к «Полиморфизму в Python», и мы свяжемся с вами.

.Полиморфизм

— что такое полиморфный метод в Java?

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

.

Добавить комментарий

Ваш адрес email не будет опубликован.