English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этой статье вы узнаете о перегрузке методов и о том, как её реализовать в Java с помощью примеров.
В Java, если два или болееметодаЕсли параметры различаются (разное количество параметров, разный тип параметров или оба параметра различаются), то они могут иметь одно и то же имя. Эти методы называются перегруженными методами, а эта функция называется перегрузкой методов. Например:
void func() { ... } void func(int a) { ... } float func(double a) { ... } float func(int a, float b) { ... }
В данном случае метод func() перегружен. У этих методов одинаковые имена, но они принимают разные параметры.
Обратите внимание, что у этих методов разный тип возвращаемого значения. Перегруженные методы могут иметь разный тип возвращаемого значения, а могут и не иметь, но они должны принимать разные параметры.
Предположим, что вам нужно выполнить арифметическую операцию сложения для заданного числа, но может быть любое количество параметров (для простоты можно сказать, что 2 или 3 параметра).
Для выполнения задачи можно создать два метода sum2num(int, int) и sum3num(int, int, int) для двух и трёх параметров соответственно. Однако, другие программисты и вы в будущем можете почувствовать затруднения, так как这两种 методы имеют одинаковые действия, но различаются по имени.
Лучшим способом выполнения этой задачи является перегрузка методов. И в зависимости от передаваемых параметров, вызывается один из перегруженных методов. Это помогает улучшить читаемость программы.
Вот несколько способов выполнения метода перегрузки:
class MethodOverloading { private static void display(int a){ System.out.println("Параметры: " + a); } private static void display(int a, int b){ System.out.println("Параметры: " + a + " и " + b); } public static void main(String[] args) { display(1); display(1, 4); } }
Вывод:
Параметры: 1 Параметры: 1 и 4
class MethodOverloading { //Этот метод принимает int private static void display(int a){ System.out.println("Получены целые числа."); } //Этот метод принимает объект String private static void display(String a){ System.out.println("Получен объект String."); } public static void main(String[] args) { display(1); display("Hello"); } }
Вывод:
Получены целые числа Получен объект String.
Здесь два перегруженных метода принимают один и тот же параметр. Однако один принимает параметр типа int, а другой принимает объект String.
Давайте рассмотрим реальный пример:
class HelperService { return String.format( } return String.format( } return String.format( } public static void main(String[] args) { HelperService hs = new HelperService(); System.out.println(hs.formatNumber(500)); System.out.println(hs.formatNumber(89.9934)); System.out.println(hs.formatNumber("550")); } }
При выполнении этого программы, вывод будет:
500 89.993 550.00
ВниманиеВ Java вы также можете перегружать конструкторы, используя способ, аналогичный методу.
Рекомендуемый материал: Java перегрузка конструкторов
Если два или более методов принимают разные параметры, они могут иметь одинаковые имена в одной и той же классе. Эта функция называется метод перегрузка.
Метод перегрузка может быть реализован следующим образом:
изменением количества параметров.
или изменением типа данных параметра.
Не可以实现方法 перегрузка только изменением типа возвращаемого значения метода.