Карта / Методы / Перегрузка

Перегрузка

Перегрузка (overloading). Можно сделать несколько методов с одним именем, но разными параметрами — Java сама выберет нужный по аргументам вызова.

print(int n) → print(5) print(String s) → print("hi") print(int a, int b) → print(2, 3)

Компилятор смотрит на количество и типы аргументов в месте вызова и сам подбирает подходящую версию метода.

Под капотом

Каждый вызов метода кладёт фрейм на стек вызовов (call stack): там его локальные переменные и точка, куда вернуться. Метод закончился — фрейм снимается, управление возвращается назад.

Стек вызовов sum(2, 3) main() ← положили при вызове основной метод метод завершился → его фрейм снимается

Рекурсия — это когда метод вызывает сам себя. Каждый вызов кладёт новый фрейм. Если нет условия выхода — фреймы не кончаются, стек переполняется и падает StackOverflowError. Поэтому у рекурсии всегда должна быть «база» — условие, на котором она останавливается.

🎤 Закрыл тему, если можешь объяснить:
• что такое перегрузка методов;
• что такое стек вызовов и StackOverflowError (если дошёл до 3-го слоя).