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

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

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

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

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

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

Комментарии (202)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #3585174 Уровень 33
31 июля 2025
like
Cryptosin Уровень 24
21 июля 2025
🔹 Важно понимать разницу между перегрузкой и переопределением методов. Когда мы перегружаем методы (overload), мы создаём несколько методов с одинаковым именем, но разными параметрами (количеством или типом). ‼️ Возвращаемый тип при этом не учитывается вообще. Это значит, что нельзя создать два метода, которые отличаются только возвращаемым типом — компилятор будет ругаться, потому что не сможет понять, какой из них вызывать. ✅ Пример неправильной перегрузки:

int calculate(int a) { return a * 2; }
double calculate(int a) { return a * 2.0; } // Ошибка! Только возвращаемый тип отличается
🔹 А вот при переопределении (override) в наследниках метод должен иметь тот же набор параметров, и возвращаемый тип может отличаться, но только если он совместим с оригиналом (ковариантный тип, например, возвращает подкласс). Итог простыми словами: 👉 Когда создаёшь метод с тем же именем — важно, чтобы отличались параметры. Тип возвращаемого значения не помогает отличить методы, и если параметры одинаковые, то такой метод — ошибка компиляции, даже если он "возвращает что-то другое".
19 мая 2025
Важно дополнение к переопределению методов, которое прочитал в интернете: Возвращаемый тип метода не имеет значения. Перегрузка методов не зависит от возвращаемого типа, поэтому два метода с одинаковым именем и параметрами, но разными возвращаемыми типами, не будут считаться перегруженными.
4el0vek3 Уровень 36
27 июля 2025
это в лекции написано
Pyramid Head First Уровень 32
5 марта 2025
Народ, на Java Core легкие задачи и повторение материала только в начале курса?) Ожидал, что он будет значительно сложнее Java Syntax.
Евгений Уровень 37
2 апреля 2025
как там на 26 уровне? становится сложнее с каждым уровнем?
Pyramid Head First Уровень 32
2 апреля 2025
На 26 уровне интересно) И задачи тоже интересные) Не назвал бы их сложными)
Antariko Уровень 8
7 января 2025
А я то думал, почему люди после 20 лвл так быстро улетают по уровням дальше, а тут вот оно что
Sierge Уровень 25
13 января 2025
Настолько преисполняются в своём познании
ВК Уровень 36
5 декабря 2024
— Где-то я уже такое видел.
Sergei R. Уровень 26
25 октября 2024
- Да что за день сегодня такой! - Это период.
Адилет А. Уровень 1
9 октября 2024
дем дальше
David Уровень 22
10 августа 2024
Накидаем лютому 😈😈😈
shakh Уровень 33
28 сентября 2024
😈😈😈
Anonymous #3473617 Уровень 23
5 августа 2024
Приятно видеть все те же лица в комментариях)))) Вместе двигаемся