Полиморфизм в Java: как перегрузить или переопределить методы

Полиморфизм в Java: как перегрузить или переопределить методы

Перегрузка и переопределение методов - два способа демонстрации полиморфизма в Java. Полиморфизм происходит от сочетания двух греческих слов: «поли», означающего «много», и «морф», означающего форму. Следовательно, полиморфизм позволяет методам принимать разные формы.





Следуйте этому руководству, чтобы узнать, как перегрузить или переопределить методы в Java.





Что такое перегрузка метода?

«Перегрузка метода» относится к определению разных методов в классе с тем же именем. У методов должны быть разные подписи. Подпись метода - это комбинация имени метода и списка параметров. Он не включает возвращаемый тип.





Компилятор знает, какой метод использовать, проверяя тип, количество параметров и порядок их размещения.

Связанный: Изучение наследования на языке программирования Java



Перегрузка метода демонстрирует полиморфизм времени компиляции. Полиморфизм во время компиляции означает, что компилятор Java связывает объект с его функциональными возможностями во время выполнения. Для этого компилятор проверяет сигнатуры методов.

Этот тип полиморфизма также известен как статическое или раннее связывание.





См. Пример перегрузки метода ниже:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

Выход:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

В приведенном выше коде показано, как можно получить куб разных типов ( int , двойной , плавать ) тем же методом.

Как правило, перегрузка метода используется для определения похожих методов с разными типами параметров.

Что такое переопределение метода?

Это относится к другой реализации метода в подклассе. Метод должен быть уже определен в родительском классе.

Переопределяющий метод (то есть метод в подклассе) должен иметь ту же сигнатуру метода, что и в суперклассе. Тип возвращаемого значения метода переопределения может быть тем же самым или подтипом, что и в суперклассе.

Переопределение обычно используется для включения в подкласс конкретной реализации поведения объекта.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

Выход:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

В приведенном выше примере показано, как метод сообщение() переопределяется в подклассах Экономия а также Фиксированный депозит . Для владельцев банковских счетов со сберегательным счетом и со счетом фиксированного депозита будут отображаться разные сообщения.

Связанный: Что нужно знать об использовании строк в Java

Также стоит отметить, что переопределение метода демонстрирует полиморфизм времени выполнения или динамическую отправку метода. Это означает, что вызываемый метод разрешается во время выполнения, а не при компиляции.

Чтобы избежать переопределения метода, используйте ключевое слово окончательный .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

Когда подкласс пытается переопределить его, возникает ошибка компиляции.

В идеале все методы, вызываемые в конструкторе, должны быть окончательный . Это сделано для того, чтобы избежать любых непреднамеренных изменений, которые могут быть вызваны подклассами.

Иногда вам может потребоваться доступ к переопределенному методу в переопределяющем методе. Вы можете использовать ключевое слово супер за которым следует оператор точки ( . ) и имя метода в таком случае.

Рассмотрим суперкласс Животное .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

Ниже представлен подкласс, называемый Рыба , который отменяет двигаться() :

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

Выход:

как починить контроллер ps4
I can swim.
I can move.

При переопределении метода вы также должны помнить об используемом модификаторе доступа. Модификатор в подклассе должен иметь такой же уровень видимости или выше, чем в базовом классе. Например, если метод в базовом классе определен как защищенный , то метод переопределения может быть защищенный или общественный .

Простой код с полиморфизмом

Переопределение и перегрузка методов важны для упрощения кода, и простой код является хорошей практикой.

Почему? Представьте себе сложную кодовую базу с большим количеством входов и выходов, чем на Центральном вокзале. А теперь представьте, что на ваших глазах разрушительный жук начинает разрушать вашу тяжелую работу. Вам нужно изолировать источник инфекции, и сделать это нужно быстро.

Удачи, вы не упростили свой код ... Теперь вы получите настоящий урок криптографии. Использование эффективных структур данных и все возможное для сокращения кода (например, помня о DRY) - ваша лучшая защита от такой ситуации.

Следующим в вашем списке изучения Java должна быть работа с массивами. Это важные структуры данных, используемые для хранения пакетов точек данных.

Делиться Делиться Твитнуть Эл. адрес Как создавать и выполнять операции с массивами в Java

Изучаете Java? Позвольте массивам с легкостью обрабатывать ваши данные.

Читать далее
Похожие темы
  • Программирование
  • Джава
  • Учебники по кодированию
Об авторе Джером Дэвидсон(Опубликовано 22 статей)

Джером - штатный писатель в MakeUseOf. Он освещает статьи по программированию и Linux. Он также криптоэнтузиаст и всегда следит за криптоиндустрией.

Ещё от Jerome Davidson

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Нажмите здесь, чтобы подписаться