Поиск…
Вступление
Полиморфизм является одним из основных понятий ООП (объектно-ориентированное программирование) . Основная идея полиморфизма заключается в том, что объект имеет возможность принимать разные формы. Для достижения этого (полиморфизма) мы имеем два основных подхода.
Перегрузка метода
- Происходит при наличии двух или более методов с тем же именем с разными входными параметрами. Тип возврата должен быть одинаковым для всех методов с тем же именем
Метод переопределения
- Возникает, когда дочерний объект использует одно и то же определение метода (одно и то же имя с одинаковыми параметрами), но имеет разные реализации.
Используя эти два подхода, мы можем использовать один и тот же метод / функцию, чтобы вести себя по-разному. Давайте посмотрим подробнее об этом в следующих примерах.
Перегрузка метода
Перегрузка метода - это способ использования полиморфизма внутри класса. Мы можем иметь два или более метода внутри одного класса с разными входными параметрами.
Разница входных параметров может быть:
- Количество параметров
- Тип параметров (Тип данных)
- Порядок параметров
Давайте посмотрим на них отдельно (эти примеры в java, поскольку я более знаком с ним - Извините за это):
Количество параметров
public class Mathematics { public int add (int a, int b) { return (a + b); } public int add (int a, int b, int c) { return (a + b + c); } public int add (int a, int b, int c, int c) { return (a + b + c + d); } }Посмотрите внимательно, вы можете видеть, что тип возврата метода тот же -
int, но эти методы имеют разное количество входов. Это называется методом загрузки с различным количеством параметров.PS: Это просто пример , нет необходимости определять функции добавления, подобные этому.
Тип параметров
public class Mathematics { public void display (int a) { System.out.println("" + a); } public void display (double a) { System.out.println("" + a); } public void display (float a) { System.out.println("" + a); } }Обратите внимание, что каждый метод имеет одно и то же имя и тот же тип возврата, в то время как у них разные типы входных данных.
PS: Этот пример предназначен только для объяснения цели.
Порядок параметров
public class Mathematics { public void display (int a, double b) { System.out.println("Numbers are " + a + " and " + b); } public void display (double a, int b) { System.out.println("Numbers are " + a + " and " + b); } }PS: Этот пример также объясняет цель.
Переопределение метода
Метод переопределения - это способ использования полиморфизма между классами. если один класс наследуется от другого, первый (подкласс) может переопределять методы последнего (суперкласса) и изменять реализацию.
это используется там, где суперкласс определяет более общую реализацию метода, тогда как подкласс использует более конкретный.
Рассмотрим следующий пример:
У нас есть класс для млекопитающих:
class Mammal {
void whoIam () {
System.out.println("I am a Mammal");
}
}
Тогда у нас есть класс для собаки, которая является млекопитающим:
class Dog extends Mammal {
@Override
void whoIam () {
super.whoIam();
System.out.println("I am a Dog!");
}
}
В этом примере мы определяем whoIam() в классе Mammal , где млекопитающее говорит, что это млекопитающее. Но это общий термин, так как там много млекопитающих. Затем мы можем наследовать класс Dog из класса Mammal , так как Dog является млекопитающим. Но, если быть более конкретным, Собака - Собака, а также Млекопитающее. Следовательно, собака должна сказать: « I am a Mammal а также I am a Dog . Следовательно, мы можем переопределить метод whoIam() в суперклассе (класс Mammal , то есть) из подкласса (класс Dog ).
Мы также можем назвать метод суперкласса, используя super.whoIam() в Java. Затем Dog будет вести себя как Собака, а также вести себя как млекопитающее.