Java
Что такое полиморфизм и для чего он нужен? Java
Что такое полиморфизм и для чего он нужен? Java
Полиморфизм — это способность функции обрабатывать данные разных типов.
Из Википедии (обсуждается всеми знакомый 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);
Из Википедии (обсуждается всеми знакомый 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);
Александр Гетьман
Че та не то
Александр Гетьман
Хотя ладно, то
Полиморфизм это типо наследование и всё что с ним связано.
Вот более официальное определение:
полиморфизм — это способность обьекта использовать методы производного класса, который не существует на момент создания базового.
UPD: Например, оверайдинг методов нужен для переопределения поведения потомка. Допустим, есть класс Частица, от которого наследуются классы Протон и Нейтрон. В классе частица есть метод масса(). Логично, что у Протона и Нейтрона разные массы, поэтому мы переопределяем у них метод масса() со своим значением
Вот более официальное определение:
полиморфизм — это способность обьекта использовать методы производного класса, который не существует на момент создания базового.
UPD: Например, оверайдинг методов нужен для переопределения поведения потомка. Допустим, есть класс Частица, от которого наследуются классы Протон и Нейтрон. В классе частица есть метод масса(). Логично, что у Протона и Нейтрона разные массы, поэтому мы переопределяем у них метод масса() со своим значением
Похожие вопросы
- Ладно, теперь серьёзно, для чего нужен Java?
- Всем привет. Помогите плз. Мне нужна помощь тех кто действительно хорошо знает Java т. к мне нужно выбрать один из курсов
- Можно ли реализовать полиморфизм (Java) с общим конструктором для разных дочерних классов?
- Помогите доделать код на java. В форму пользователь вводит символ, который нужно заменить на #.
- Не выводит изображение в JAVA
- Java проблема с рефлексией.
- Java Developer vs Android Developer. Куда дальше?
- Пишут ли стартапы на Java?
- С какой книги начинать изучение Java?
- Подскажите, пожалуйста, нужен ли вообще диплом о высшем образовании программисту на JAVA?