Перегрузка методов (overloading) — создание нескольких методов с одинаковым именем, но разными параметрами. Компилятор выбирает нужный метод по сигнатуре вызова.
- Методы различаются по количеству, типам или порядку параметров
- Возвращаемый тип не участвует в определении перегрузки
- Пример:
print(int x)иprint(String s)
Перегрузка делает код читаемым — одно имя для схожих операций. Этот онлайн-тренажёр содержит практические задания на создание и использование перегруженных методов. Примеры и тесты помогут понять правила разрешения перегрузки в Java.
- Модуль 1: Первая программа и структура
- Модуль 2: Переменные и типы данных
- Объявление и инициализация переменных.
- Примитивы: целые числа (int, long, byte, short).
- Примитивы: дробные числа (double, float).
- Примитивы: логический тип (boolean).
- Примитивы: символьный тип (char).
- String — основы работы со строками.
- Приведение типов (Casting): расширение и сужение.
- Область видимости переменных (Scope).
- Модуль 3: Операторы
- Модуль 4: Управляющие конструкции
- Модуль 5: Массивы и Строки (Advanced)
- Создание и заполнение массива.
- Доступ к элементам по индексу.
- Свойство length и перебор массива.
- Цикл for-each для массивов.
- Многомерные массивы.
- Методы String: length, charAt, isEmpty.
- Манипуляции: substring, concat, replace.
- Сравнение строк: equals vs ==.
- Разделение строк (split) и trim.
- StringBuilder (изменяемые строки).
- Модуль 6: Методы
- Объявление методов и void.
- Параметры и аргументы метода.
- Возврат значения (return).
- Перегрузка методов (Overloading).
- Рекурсия (базовые примеры).
- Модуль 7: Классы и Объекты (ООП Часть 1)
- Модуль 8: Капсуляция и Модификаторы
- Модуль 9: Наследование и Полиморфизм (ООП Часть 2)
- Модуль 10: Обработка исключений
- Модуль 11: Коллекции и Дженерики
- Модуль 12: Функциональный стиль (Java 8+)
- Модуль 13: Полезные стандарты
1. Заполнить параметры метода
В этом задании вам нужно дополнить два перегруженных метода, заполнив пропущенные элементы. Обратите внимание, что методы имеют одинаковое имя, но различаются параметрами. В одном методе пропущен тип параметра, в другом — имя параметра. Ваша задача — вставить корректные значения так, чтобы методы могли быть использованы для вывода информации о пользователе. Учтите, что перегрузка методов требует различия в типах или количестве параметров.
public class UserInfo {
// Выводит имя пользователя
public static void printInfo(input1S name) {
System.out.println("Имя: " + name);
}
// Выводит имя и возраст пользователя
public static void printInfo(String name, int input2S) {
System.out.println("Имя: " + name + ", Возраст: " + input2S);
}
public static void main(String[] args) {
printInfo("Анна");
printInfo("Иван", 30);
}
}2. Найти ошибку перегрузки
В данном фрагменте Java-кода допущена ошибка, связанная с перегрузкой методов. Два метода имеют одинаковое имя и одинаковые параметры, но разные возвращаемые типы, что приводит к ошибке компиляции. Найдите метод, который вызывает конфликт, и исправьте его, изменив параметры так, чтобы методы стали корректно перегруженными. Обратите внимание, что изменять нужно только параметры, а не возвращаемый тип или имя метода.
public class Calculator { public int add(int a, int b) { return a + b; } public double add(int a, int b) { return (double) (a + b); } public static void main(String[] args) { Calculator calc = new Calculator(); System.out.println(calc.add(5, 3)); }}3. Собрать перегруженные методы
Из предложенных строк соберите корректный Java-класс с тремя перегруженными методами print. Методы должны выводить на экран сообщения с соответствующими типами данных. Одна из строк является лишней (дублирует сигнатуру одного из методов) и не должна входить в решение.
public class OverloadExample { public void print(int x) { System.out.println("Целое число: " + x); } public void print(double x) { System.out.println("Дробное число: " + x); } public void print(String s) { System.out.println("Строка: " + s); }} public void print(int x) { System.out.println("Еще одно целое число: " + x); }4. Какой метод будет вызван
Проанализируйте представленный код на Java, содержащий класс с тремя перегруженными методами process(). Определите, какой именно метод будет вызван при выполнении строки demo.process(10.5) в методе main. Обратите внимание на типы параметров методов и тип передаваемого аргумента.
class OverloadDemo {
void process(int x) {
System.out.println("Вызван метод с int: " + x);
}
void process(double x) {
System.out.println("Вызван метод с double: " + x);
}
void process(String x) {
System.out.println("Вызван метод с String: " + x);
}
public static void main(String[] args) {
OverloadDemo demo = new OverloadDemo();
demo.process(10.5);
}
}5. Вызовы и методы
В левой колонке приведены вызовы перегруженного метода process с различными аргументами. В правой колонке приведены сигнатуры методов. Сопоставьте каждый вызов метода с той сигнатурой, которая будет вызвана в соответствии с правилами разрешения перегрузки в Java. Обратите внимание на типы и количество аргументов. Все пары однозначны.
process(5);process(5.0);process("hello");process(5, 10);process(5, 10.0);void process(String s)void process(int a)void process(double a)void process(int a, double b)void process(int a, int b)6. Приоритет разрешения перегрузки
В Java при вызове перегруженного метода компилятор выбирает наиболее подходящий вариант по определённым правилам. Эти правила применяются в строгом порядке приоритета. Перед вами четыре шага, описывающие эти правила, но они перемешаны. Расставьте шаги в том порядке, в котором компилятор Java проверяет их при разрешении перегрузки методов, начиная с самого высокого приоритета.
7. Разметить сигнатуру метода
В этом задании вам нужно разметить сигнатуру метода в Java. Дано объявление метода. Разметьте каждый выделенный сегмент, указав его тип: модификатор доступа, возвращаемый тип, имя метода, тип параметра или имя параметра. Это поможет лучше понять структуру объявлений методов в Java и подготовиться к теме перегрузки методов, где методы имеют одно имя, но различаются параметрами.
{{public~|~t1}} {{int~|~t2}} {{calculateSum~|~t3}}({{int~|~t4}} {{a~|~t5}})8. Выбрать типы параметров
Complete the Java code to create two overloaded methods named 'calculate'. Select appropriate parameter types from the dropdown list so that the methods have different signatures - one method should accept two parameters of different types, and the other should accept a single parameter. Remember that method overloading requires different parameter lists (different number of parameters or different parameter types).
public class Calculator {
public void calculate(input1S a, input2S b) {
System.out.println("Two parameters: " + a + ", " + b);
}
public void calculate(input3S c) {
System.out.println("One parameter: " + c);
}
public static void main(String[] args) {
Calculator calc = new Calculator();
calc.calculate(10, 20.5);
calc.calculate("Hello");
}
}