Перегрузка и переопределение методов - два способа демонстрации полиморфизма в Java. Полиморфизм происходит от комбинации двух греческих слов: «поли», означающего «много», и «морф», означающего форму. Следовательно, полиморфизм позволяет методам принимать разные формы.
Следуйте этому руководству, чтобы узнать, как перегрузить или переопределить методы в Java.
Что такое перегрузка метода?
«Перегрузка метода» относится к определению разных методов в классе с тем же именем. У методов должны быть разные подписи. Подпись метода - это комбинация имени метода и списка параметров. Он не включает возвращаемый тип.
Компилятор знает, какой метод использовать, проверяя тип, количество параметров и порядок их размещения.
Связанный: Изучение наследования на языке программирования Java
Перегрузка метода демонстрирует полиморфизм времени компиляции. Полиморфизм во время компиляции означает, что компилятор Java связывает объект с его функциональными возможностями во время выполнения. Для этого компилятор проверяет сигнатуры методов.
Этот тип полиморфизма также известен как статическое или раннее связывание.
См. Пример перегрузки метода ниже:
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? Позвольте массивам с легкостью обрабатывать ваши данные.
Читать далее
- Программирование
- Ява
- Учебники по кодированию

Джером - штатный писатель в MakeUseOf. Он освещает статьи по программированию и Linux. Он также криптоэнтузиаст и всегда следит за криптоиндустрией.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Еще один шаг…!
Пожалуйста, подтвердите свой адрес электронной почты в электронном письме, которое мы вам только что отправили.