„Здравей, Амиго! Ще ти разкажа за претоварването на метода .“
"Можете и тях да претоварите?! Какъв ден!"
„Можете да направите много с тях, но няма да навлизаме в това точно сега.“
"Това е сделка."
„Претоварването е много проста операция. Всъщност това дори не е операция върху методи, въпреки че понякога се споменава с плашещо име: параметричен полиморфизъм .“
Нещото, което трябва да запомните е, че всеки метод в клас трябва да има уникално име.
"Да, знам."
„Е, това не е съвсем вярно. Искам да кажа, изобщо не е вярно. Един метод не трябва да има уникално име. Това, което трябва да бъде уникално, е комбинацията от име на метод и типовете на неговите параметри . Тази комбинация също е известен като сигнатура на метод."
Код | Коментари |
---|---|
|
Това е разрешено. Двата метода имат уникални имена. |
|
И това също е разрешено. Двата метода имат уникални имена (сигнатури). |
|
Имената на методите все още са уникални тук. |
|
Но това не е позволено. Методите не са уникални, въпреки че се предават различни типове. |
|
Но това е позволено. Параметрите на метода са уникални. |
— Това вече съм го виждал някъде.
"Да. Когато въведете " System.out.println ", IntelliJ IDEA предлага няколко дузини версии на методи за печат , които използват различни параметри. Компилаторът просто идентифицира и след това извиква необходимия метод въз основа на типовете параметри, които подавате."
"Това не е толкова трудно. Но не е полиморфизъм."
„Или по-точно, това не е отмяна на метода.“
Между другото, искам да отбележа, че имената на параметрите са без meaning. Те се губят по време на компилация. След като методът е изпълнен, са известни само неговото име и типове параметри.
GO TO FULL VERSION