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

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

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

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

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

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

Комментарии (6)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Руслан Никитин Уровень 109
24 июля 2024
Перегрузка – это очень простая операция. На самом деле – это даже не операция над методами, хотя иногда ее называют страшным словом – параметрический полиморфизм. Что то не сходится с общей информацией. Типы полиморфизма 1 Ad-hoc полиморфизм - в Java это перегрузка, т.е. это свойство языка позволяющее создать функцию, семантика которой будет зависеть от типов входных параметров. 2 Полиморфизм подтипов (subtyping) - свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. 3 Параметрический полиморфизм - вид полиморфизма, когда функция выполняется вне зависимости от типа аргумента.Такой вид полиморфизма в языках часто раскрывается через Generic'и
17 июля 2023
medium)
Олег Уровень 103
13 февраля 2022
Там все правильно :)
Николай Зернов Уровень 1 Expert
13 февраля 2022
main шестой
Mikhail K Уровень 100
11 февраля 2022
task1212 поправьте условие Класс Solution должен содержать шесть методов. - Пять методов.
Павел Варакин Уровень 48
21 августа 2022
а метод main?