JavaRush/Курсы/Модуль 2. Java Core/Перегрузка методов

Перегрузка методов

Открыта

— Привет, Амиго! А я расскажу тебе о перегрузке методов.

— Их еще и перегружать можно?! Да что за день сегодня такой!

— С ними много чего можно делать, но не будем об этом.

— Согласен.

— Перегрузка – это очень простая операция. На самом деле – это даже не операция над методами, хотя иногда ее называют страшным словом – параметрический полиморфизм.

Дело в том, что все методы внутри класса должны иметь уникальные имена.

— Да, я знаю об этом.

— Так вот, это не совсем так. Вернее совсем не так. Метод не должен иметь уникальное имя. Уникальным должно быть объединение из имени и типов параметров этого метода. Их еще называют сигнатурами методов.

Код Описание
public void print();
public void print2();
Так можно. Два метода имеют уникальные имена.
public void print();
public void print(int n);
И так можно. Два метода имеют уникальные имена (сигнатуры).
public void print(int n, int n2);
public void print(int n);
Все еще уникальные методы.
public int print(int a);
public void print(int n);
А так нельзя. Методы не уникальные, хоть и возвращают разные типы.
public int print(int a, long b);
public long print(long b, int a);
А так – можно. Параметры методов уникальные.

— Где-то я уже такое видел.

— Ага. Когда ты пишешь System.out.println, Intellij IDEA подсказывает тебе и выдает в подсказке пару десятков методов print с разными параметрами. Компилятор просто определит нужный метод, по типам переменных, которые ты туда передаешь, и пропишет вызов именно его.

— Это, вроде, не сложно. Не полиморфизм, однако.

— Точнее — не переопределение методов

Кстати, обращаю твое внимание, что имена параметров роли не играют – они теряются при компиляции. После компиляции о методе известно только его имя и типы параметров.

Комментарии (6)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
24 июля 2024, 02:39
Перегрузка – это очень простая операция. На самом деле – это даже не операция над методами, хотя иногда ее называют страшным словом – параметрический полиморфизм. Что то не сходится с общей информацией. Типы полиморфизма 1 Ad-hoc полиморфизм - в Java это перегрузка, т.е. это свойство языка позволяющее создать функцию, семантика которой будет зависеть от типов входных параметров. 2 Полиморфизм подтипов (subtyping) - свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. 3 Параметрический полиморфизм - вид полиморфизма, когда функция выполняется вне зависимости от типа аргумента.Такой вид полиморфизма в языках часто раскрывается через Generic'и
17 июля 2023, 08:11
medium)
Олег Java Developer
13 февраля 2022, 09:48
Там все правильно :)
Николай Зернов
Уровень 59
Expert
13 февраля 2022, 12:23
main шестой
Mikhail K
Уровень 100
11 февраля 2022, 09:04
task1212 поправьте условие Класс Solution должен содержать шесть методов. - Пять методов.
Павел Варакин
Уровень 48
21 августа 2022, 17:54
а метод main?