TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #132 5.95K
В чём разница между переопределением и перегрузкой ?
Спросят с вероятностью 12%

Переопределение (Overriding) и перегрузка (Overloading) методов — это два ключевых концепта в ООП, которые часто вызывают путаницу из-за схожести терминов. Однако, эти механизмы служат разным целям и имеют различные правила.

Переопределение методов (Overriding)

Это механизм, позволяющий подклассу предоставить специфическую реализацию метода, который уже определён в его суперклассе. Переопределённый метод в подклассе должен иметь ту же сигнатуру, что и метод в суперклассе (то есть те же имя метода, тип возвращаемого значения и параметры).

✅Применяется для методов в классах, находящихся в иерархии наследования.
✅Модификатор доступа переопределённого метода не может быть более строгим, чем у метода в суперклассе.
✅Используется ключевое слово @Override для указания на переопределение метода (не обязательно, но является хорошей практикой).

Пример:
class Animal {
void eat() {
System.out.println("Animal is eating");
}
}

class Dog extends Animal {
@Override
void eat() {
System.out.println("Dog is eating");
}
}

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

Это механизм, позволяющий определить несколько методов с одинаковым именем в пределах одного класса, но с разными списками параметров (разное количество параметров или их типы).

✅Может применяться как в одном классе, так и в классах-наследниках.
✅Тип возвращаемого значения и модификатор доступа могут отличаться.
✅Важно, чтобы списки параметров перегружаемых методов отличались.

Пример:
class Demo {
void print(String msg) {
System.out.println(msg);
}

void print(String msg, int times) {
for (int i = 0; i < times; i++) {
System.out.println(msg);
}
}
}


✅Переопределение (Overriding) используется для изменения поведения методов унаследованных от суперкласса. Это связано с полиморфизмом и позволяет объектам подклассов вести себя по-разному при вызове того же метода.
✅Перегрузка (Overloading) позволяет создавать методы с одинаковым именем, но разными параметрами в пределах одного класса или в иерархии наследования, предоставляя тем самым унифицированные способы выполнения похожих, но технически различных операций.

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

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
  • 👍 30
  • ❤ 1
More from @easy_java_ru
  1. Oct 12, 2026🤔 Жизненный цикл сервлетов? 1. Загрузка и инициализация (init); 2. Обработка запроса (ser…
  2. Oct 12, 2026🤔 Как остановить поток? Остановить поток в Java можно несколькими способами, но важно пом…
  3. Oct 11, 2026🤔 Какой класс позволяет читать данные из входного байтового потока в формате примитивных…
  4. Oct 11, 2026🤔 Чем отличается where от having ? WHERE и HAVING используются для фильтрации записей, но…
  5. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  6. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →