undefined

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

Java Core
2 уровень , 3 лекция
Открыта

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

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

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

— Согласен.

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

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

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

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

Код Описание
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 с разными параметрами. Компилятор просто определит нужный метод, по типам переменных, которые ты туда передаешь, и пропишет вызов именно его.

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

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

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

Комментарии (111)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
Valua Sinicyn 40 уровень, Харьков
17 февраля 2021
Что там у Google спрашивать ? Элементарно же ... Перегруженный метод (overloaded method) - одноименный метод с разным списком и/или порядком параметров (параметрический полиморфизм). Модификатор доступа и тип возвращаемого значения, при определении перегрузки, не учитываются.
Alexandr 19 уровень, Минск
6 февраля 2021
Советую у гугла спросить что такое перегрузка методов, по 1 ссылке сразу станет понятно на более "адекватных" , что ли, примерах.
stepa113 18 уровень, Москва
8 января 2021
В общем настолько неправильно передается информация, что если ты имеешь из других источников нормально структурированную теория, то после этой теории такая каша потом в голове. Хочется вообще не читать эту теорию и тупо выполнять задачи, в котором условия задачи тоже криво заданы
26 декабря 2020
Очень интересный курс от Alishev'a Тык! Дерзайте!
26 декабря 2020
Перегрузка – это очень простая операция. На самом деле – это даже не операция над методами, хотя иногда ее называют страшным словом – параметрический полиморфизм. Я бы не сказал что прямо то легко!
Veygard 22 уровень, Москва
16 декабря 2020
Если помните, тоже самое мы делали с конструкторами. Когда создавали один для имени, а второй для имени и возраста. Тут тоже самое: пока методы с одним и тем же именем принимают разные аргументы - можно их создавать.
Станислав 19 уровень, Москва
14 октября 2020
А я sout писал.
Екатерина 18 уровень
10 октября 2020
"— Где-то я уже такое видел." Ты это видел в конструкторах 😁
Иван 16 уровень, Москва
22 июня 2020
Что такое имя параметра?
MAX 16 уровень, Киров
3 июня 2020
Переопределение методов - изменение "кишочков" методов, всего того, что внутри { }. Сверху добавить @Override Перегрузка методов - изменение / добавление параметров, всего что до { }, изменение сигнатуры