Претоварените методи са методи в един и същи клас, които споделят едно и също име, но приемат различни типове променливи като аргументи. Например, един клас може да съдържа два различни метода „добавяне“: един, който приема две двойни стойности, „добави (двойно a, двойно 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)“.