Перевантаження методу Java (з прикладами)

У цій статті ви дізнаєтеся про перевантаження методів та про те, як це можна досягти в 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)для двох та трьох параметрів відповідно. Однак інші програмісти, як і ви, в майбутньому можуть заплутатися, оскільки поведінка обох методів однакова, але вони відрізняються за назвою.

Кращий спосіб виконати це завдання - це перевантаження методів. І, залежно від переданого аргументу, викликається один із перевантажених методів. Це сприяє збільшенню читабельності програми.

Як виконати перевантаження методів в Java?

Ось різні способи виконання перевантаження методів:

1. Перевантаження шляхом зміни кількості аргументів

 class MethodOverloading ( private static void display(int a)( System.out.println("Arguments: " + a); ) private static void display(int a, int b)( System.out.println("Arguments: " + a + " and " + b); ) public static void main(String() args) ( display(1); display(1, 4); ) )

Вихід :

 Аргументи: 1 Аргументи: 1 і 4

2. Змінюючи тип даних параметрів

 class MethodOverloading ( // this method accepts int private static void display(int a)( System.out.println("Got Integer data."); ) // this method accepts String object private static void display(String a)( System.out.println("Got String object."); ) public static void main(String() args) ( display(1); display("Hello"); ) ) 

Вихід :

Отримав цілочисельні дані. Отримав об’єкт рядка.

Тут обидва перевантажені методи приймають один аргумент. Однак один приймає аргумент типу, intтоді як інший - Stringоб'єкт.

Давайте подивимось на реальний приклад:

 class HelperService ( private String formatNumber(int value) ( return String.format("%d", value); ) private String formatNumber(double value) ( return String.format("%.3f", value); ) private String formatNumber(String value) ( return String.format("%.2f", Double.parseDouble(value)); ) 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

Важливі моменти

  • Два або більше методів можуть мати одне й те саме ім'я всередині одного класу, якщо вони приймають різні аргументи. Ця функція відома як перевантаження методів.
  • Перевантаження методу досягається будь-яким:
    • зміна кількості аргументів.
    • або зміна типу аргументів даних.
  • Це не перевантаження методів, якщо ми змінюємо лише тип повернення методів. У кількості параметрів повинні бути різниці.

Цікаві статті...