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

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

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

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

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

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

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

instagram viewer

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

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

class Arithmetic {
int cube (int x) {
вернуть х * х * х;
}
двойной куб (двойной х) {
вернуть х * х * х;
}
float cube (float x) {
вернуть х * х * х;
}
public static void main (String [] args) {
Арифметика myMultiplication = новая арифметика ();
System.out.println («Куб из 5 равен» + myMultiplication.cube (5));
System.out.println ("Куб 5.0 равен" + myMultiplication.cube (5.0));
System.out.println («Куб 0,5 равен» + myMultiplication.cube (0,5));
}
}

Выход:

Куб 5 равен 125
Куб 5,0 равен 125,0
Куб 0,5 равен 0,125

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

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

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

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

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

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

class Account {
public void message () {
System.out.println ("
Спасибо, что открыли у нас счет! »);
}
public static void main (String args []) {
Учетная запись myAccount = новая учетная запись ();
Экономия mySavings = новая экономия ();
FixedDeposit myFixedDepo = новый FixedDeposit ();
myAccount.message ();
mySavings.message ();
myFixedDepo.message ();
}
}
class Savings extends Account {
public void message () {
System.out.println ("
Спасибо, что открыли у нас Сберегательный счет! »);
}
}
class FixedDeposit расширяет Account {
public void message () {
System.out.println ("
Спасибо, что открыли у нас Срочный депозит! »);
}
}

Выход:

Спасибо, что открыли у нас счет!
Спасибо, что открыли у нас сберегательный счет!
Спасибо, что открыли у нас Срочный депозит!

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

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

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

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

final void message () {
System.out.println ("
Спасибо, что открыли у нас счет! »);
}

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

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

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

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

class Animal {
public void move () {
System.out.println ("
Я могу двигаться. ");
}
}

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

class Fish extends Animal {
public void move () {
System.out.println ("
Я могу плавать.");
super.move ();
}
public static void main (String args []) {
Рыба Тилапия = новая рыба ();
Tilapia.move ();
}
}

Выход:

Я могу плавать.
Я могу двигаться.

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

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

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

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

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

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

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

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

Читать далее

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

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

Ещё от Jerome Davidson

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

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

Еще один шаг…!

Пожалуйста, подтвердите свой адрес электронной почты в электронном письме, которое мы вам только что отправили.

.