Аркадий Саакян
Мастер
(1680)
2 года назад
Полиморфизм — это способность функции обрабатывать данные разных типов.
Из Википедии (обсуждается всеми знакомый Ad-hoc-полиморфизм):
"Поддерживается во многих языках посредством перегрузки функций и методов, а в слабо типизированных — также посредством приведения типов."
ОПРЕДЕЛЕНИЯ:
• Перегрузка функций — возможность использования нескольких функций под одним именем;
• Приведение типов — преобразование одного типа к другому.
===== Пример 1:
Путем перегрузки функции =====
int plus(int a, int b) { return a + b; }
float plus(float a, float b) { return a + b; }
double plus(double a, double b) { return a + b; }
===== Пример 2:
Путем приведения типов =====
Object plus(Object a, Object b) {
if (a instanceof Integer && b instanceof Integer) {
Integer aInt = (Integer) a;
Integer bInt = (Integer) b;
return aInt + bInt;
} else if(...) {
// ...
}
}
ТАКЖЕ есть так называемый параметрический полиморфизм. Вот пример реализации на языке Java:
public <T extends Animal> void process(T animal);
Zhenya7727
Мудрец
(11346)
2 года назад
Полиморфизм это типо наследование и всё что с ним связано.
Вот более официальное определение:
полиморфизм — это способность обьекта использовать методы производного класса, который не существует на момент создания базового.
UPD: Например, оверайдинг методов нужен для переопределения поведения потомка. Допустим, есть класс Частица, от которого наследуются классы Протон и Нейтрон. В классе частица есть метод масса(). Логично, что у Протона и Нейтрона разные массы, поэтому мы переопределяем у них метод масса() со своим значением