Перегрузка
Перегрузка (overloading). Можно сделать несколько методов с одним именем, но разными параметрами — Java сама выберет нужный по аргументам вызова.
Компилятор смотрит на количество и типы аргументов в месте вызова и сам подбирает подходящую версию метода.
Под капотом
Каждый вызов метода кладёт фрейм на стек вызовов (call stack): там его локальные переменные и точка, куда вернуться. Метод закончился — фрейм снимается, управление возвращается назад.
Рекурсия — это когда метод вызывает сам себя. Каждый вызов кладёт новый фрейм. Если нет условия выхода — фреймы не кончаются, стек переполняется и падает StackOverflowError. Поэтому у рекурсии всегда должна быть «база» — условие, на котором она останавливается.
🎤 Закрыл тему, если можешь объяснить:
• что такое перегрузка методов;
• что такое стек вызовов и StackOverflowError (если дошёл до 3-го слоя).
• что такое стек вызовов и StackOverflowError (если дошёл до 3-го слоя).