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

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

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

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

Комментарии (200)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Grigoryvvv
Уровень 28
Expert
9 августа, 08:13
09.08.2026 / 22 уровень
Anonymous #3585174
Уровень 33
31 июля 2025, 14:03
like
Cryptosin Crypto Magnat
21 июля 2025, 08:45
🔹 Важно понимать разницу между перегрузкой и переопределением методов. Когда мы перегружаем методы (overload), мы создаём несколько методов с одинаковым именем, но разными параметрами (количеством или типом). ‼️ Возвращаемый тип при этом не учитывается вообще. Это значит, что нельзя создать два метода, которые отличаются только возвращаемым типом — компилятор будет ругаться, потому что не сможет понять, какой из них вызывать. ✅ Пример неправильной перегрузки:
int calculate(int a) { return a * 2; }
double calculate(int a) { return a * 2.0; } // Ошибка! Только возвращаемый тип отличается
🔹 А вот при переопределении (override) в наследниках метод должен иметь тот же набор параметров, и возвращаемый тип может отличаться, но только если он совместим с оригиналом (ковариантный тип, например, возвращает подкласс). Итог простыми словами: 👉 Когда создаёшь метод с тем же именем — важно, чтобы отличались параметры. Тип возвращаемого значения не помогает отличить методы, и если параметры одинаковые, то такой метод — ошибка компиляции, даже если он "возвращает что-то другое".
19 мая 2025, 17:03
Важно дополнение к переопределению методов, которое прочитал в интернете: Возвращаемый тип метода не имеет значения. Перегрузка методов не зависит от возвращаемого типа, поэтому два метода с одинаковым именем и параметрами, но разными возвращаемыми типами, не будут считаться перегруженными.
4el0vek3
Уровень 40
27 июля 2025, 14:26
это в лекции написано
Henry Creel
Уровень 32
5 марта 2025, 17:01
Народ, на Java Core легкие задачи и повторение материала только в начале курса?) Ожидал, что он будет значительно сложнее Java Syntax.
как там на 26 уровне? становится сложнее с каждым уровнем?
Henry Creel
Уровень 32
2 апреля 2025, 14:54
На 26 уровне интересно) И задачи тоже интересные) Не назвал бы их сложными)
Antariko
Уровень 1
7 января 2025, 16:34
А я то думал, почему люди после 20 лвл так быстро улетают по уровням дальше, а тут вот оно что
Sierge
Уровень 25
13 января 2025, 10:01
Настолько преисполняются в своём познании
ВК
Уровень 38
5 декабря 2024, 21:37
— Где-то я уже такое видел.
Sergei R.
Уровень 26
25 октября 2024, 01:28
- Да что за день сегодня такой! - Это период.
Адилет А.
Уровень 1
9 октября 2024, 11:28
дем дальше
David QA Automation Engineer
10 августа 2024, 16:16
Накидаем лютому 😈😈😈
shakh
Уровень 33
28 сентября 2024, 11:48
😈😈😈