Mail.ruПочта0Мой Мир0ОдноклассникиВКонтактеИгры0ЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что такое полиморфизм и для чего он нужен? Java

vadim solovjev Ученик (89), закрыт 2 года назад
Что такое полиморфизм и для чего он нужен? Java
Лучший ответ
Аркадий Саакян Мастер (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 года назад
Че та не то
Zhenya7727Мудрец (11346) 2 года назад
Хотя ладно, то
Остальные ответы
Zhenya7727 Мудрец (11346) 2 года назад
Полиморфизм это типо наследование и всё что с ним связано.

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

UPD: Например, оверайдинг методов нужен для переопределения поведения потомка. Допустим, есть класс Частица, от которого наследуются классы Протон и Нейтрон. В классе частица есть метод масса(). Логично, что у Протона и Нейтрона разные массы, поэтому мы переопределяем у них метод масса() со своим значением
Zhenya7727Мудрец (11346) 2 года назад
Держите, тут уже усё есть, с ответами
https://github.com/enhorse/java-interview
Похожие вопросы