— Привет, Амиго! А я расскажу тебе о перегрузке методов.
— Их еще и перегружать можно?! Да что за день сегодня такой!
— С ними много чего можно делать, но не будем об этом.
— Согласен.
— Перегрузка – это очень простая операция. На самом деле – это даже не операция над методами, хотя иногда ее называют страшным словом – параметрический полиморфизм.
Дело в том, что все методы внутри класса должны иметь уникальные имена.
— Да, я знаю об этом.
— Так вот, это не совсем так. Вернее совсем не так. Метод не должен иметь уникальное имя. Уникальным должно быть объединение из имени и типов параметров этого метода. Их еще называют сигнатурами методов.
Код | Описание |
---|---|
|
Так можно. Два метода имеют уникальные имена. |
|
И так можно. Два метода имеют уникальные имена (сигнатуры). |
|
Все еще уникальные методы. |
|
А так нельзя. Методы не уникальные, хоть и возвращают разные типы. |
|
А так – можно. Параметры методов уникальные. |
— Где-то я уже такое видел.
— Ага. Когда ты пишешь System.out.println, Intellij IDEA подсказывает тебе и выдает в подсказке пару десятков методов print с разными параметрами. Компилятор просто определит нужный метод, по типам переменных, которые ты туда передаешь, и пропишет вызов именно его.
— Это, вроде, не сложно. Не полиморфизм, однако.
— Точнее — не переопределение методов
Кстати, обращаю твое внимание, что имена параметров роли не играют – они теряются при компиляции. После компиляции о методе известно только его имя и типы параметров.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ