Переваги та недоліки методу перевантаження в Java

Перевантажені методи — це методи в одному класі, які мають однакову назву, але приймають різні типи змінних як аргументи. Наприклад, клас може містити два різні методи "додати": один, який приймає два подвійних значення, "додати (double a, double b)" і один, який приймає два значення. цілі значення, "додати (int a, int b)." Комп’ютер автоматично вирішує, який метод викликати під час виконання на основі типів змінних, які передаються до метод.

Гнучкість

Перевантажені методи дають програмістам можливість викликати подібний метод для різних типів даних. Наприклад, якщо ви працюєте над програмою з математики, ви можете використовувати перевантаження, щоб створити кілька класів «множення», кожен з яких множить різну кількість типів аргументу: найпростіший "помножити (int a, int b)" множить два цілі числа; більш складний метод "множити (подвійне a, int b, int c)" множить один подвійний на два цілих числа - тоді ви можете викликати "multiply" для будь-якої комбінації змінних, для якої ви створили перевантажений метод, і отримаєте належний результат.

Відео дня

Конструктори

Перевантаження також використовується в конструкторах для створення нових об’єктів із різними обсягами даних. Наприклад, ви можете використовувати перевантаження для створення трьох різних конструкторів для об’єкта «Дім» з номером будинку, назвою вулиці та змінними кольору. Найпростіший конструктор "House()" не приймає аргументів і створює будинок із змінними за замовчуванням або порожніми. Більш складний конструктор «Дім (int houseNumber, String streetName)» створює будинок із зазначеним номером будинку та назвою вулиці, але кольором за замовчуванням або порожнім кольором. Найскладніший конструктор «Дім (int houseNumber, String streetName, String color)» створює будинок з усією вказаною інформацією, не залишаючи нічого за замовчуванням. Потім ви можете створити об’єкт будинку на основі інформації, доступної на даний момент, при цьому недоступну інформацію залишити порожнім або за умовчанням.

Неоднозначні посилання

Перевантажені методи повинні використовувати різні числа або типи аргументів, щоб уникнути двозначності. Якщо ви створюєте два методи в одному класі з однаковою назвою і приймаєте два цілі числа як аргументи, Компілятор Java не зможе розрізнити їх, навіть якщо вхідні змінні мають різні імена. Наприклад, метод "add (int a, int b)" не може існувати в тому ж класі, що і метод "add (int c, int d)".

Типи повернення

Ви повинні визначити тип повернення для кожного перевантаженого методу. Методи можуть мати різні типи повернення - наприклад, "add (int a, int b)" може повертати ціле число, тоді як "add (double a, double b)" повертає подвійне. Однак Java не може розрізняти два різні методи на основі їх типу повернення. Тому "int multiply (double a, double b)" не може існувати в тому ж класі, що й "double multiply (double a, double b)".