Полиморфизм в ООП
Полиморфизм является одной из основных концепций объектно-ориентированного программирования (ООП). Он позволяет одному и тому же методу или функции иметь различную реализацию в разных классах, что обеспечивает гибкость и удобство использования кода.
Представим, что у нас есть базовый класс "Фигура", и от него наследуются классы соответствующих фигур, такие как "Круг", "Прямоугольник" и "Треугольник". В каждом из этих классов у нас есть метод "площадь", но реализация этого метода будет различаться для каждого класса.
Пример кода на языке Python:
class Фигура:
def площадь(self):
pass
class Круг(Фигура):
def __init__(self, радиус):
self.радиус = радиус
def площадь(self):
return 3.14 * self.радиус ** 2
class Прямоугольник(Фигура):
def __init__(self, ширина, высота):
self.ширина = ширина
self.высота = высота
def площадь(self):
return self.ширина * self.высота
class Треугольник(Фигура):
def __init__(self, основание, высота):
self.основание = основание
self.высота = высота
def площадь(self):
return (self.основание * self.высота) / 2
В этом примере мы определяем базовый класс "Фигура" с методом "площадь", который предполагает одну и ту же реализацию для всех классов, наследующих его. Затем мы создаем классы "Круг", "Прямоугольник" и "Треугольник", каждый из которых переопределяет метод "площадь" в соответствии с логикой для своей фигуры.
Это позволяет нам использовать полиморфизм, вызывая метод "площадь" для объектов различных классов, и получать правильные результаты в соответствии с конкретной фигурой. Например:
круг = Круг(5)
прямоугольник = Прямоугольник(4, 6)
треугольник = Треугольник(3, 7)
print(круг.площадь()) # Выведет: 78.5
print(прямоугольник.площадь()) # Выведет: 24
print(треугольник.площадь()) # Выведет: 10.5
В данном примере мы создаем экземпляры каждого из классов и вызываем их методы "площадь". Благодаря полиморфизму, программа понимает, какой конкретный метод "площадь" вызывать для каждого объекта в соответствии с типом класса.
Это позволяет нам обобщить общую функциональность в базовом классе и при необходимости вносить изменения или реализовывать специфическую логику для каждого класса.
В результате полиморфизм позволяет нам писать более гибкий и удобочитаемый код, способный обрабатывать различные типы данных и объектов в едином интерфейсе.