Перегрузка (overloading) и переопределение (overriding)
Перегрузка (overloading):
Перегрузка методов позволяет определить несколько методов с одним и тем же именем в одном классе, но с разными сигнатурами (типами и/или количеством параметров). При вызове перегруженного метода JVM определяет, какой метод следует вызывать, основываясь на переданных аргументах.
public class MyClass { public void print(int x) { System.out.println("Метод print с одним параметром: " + x); } public void print(int x, int y) { System.out.println("Метод print с двумя параметрами: " + x + " и " + y); } }
Переопределение (overriding):
Переопределение методов происходит, когда подкласс предоставляет реализацию метода, который был унаследован от его родительского класса. Подкласс может изменить реализацию метода, предоставленную его родительским классом, чтобы адаптировать ее к своим нуждам.
// Родительский класс class Animal { void sound() { System.out.println("Животное издает звук"); } } // Подкласс, переопределяющий метод родительского класса class Dog extends Animal { void sound() { System.out.println("Собака лает"); } }
Отличие между перегрузкой и переопределением заключается в том, что перегрузка происходит в одном классе, а переопределение - в иерархии классов (суперклассе и подклассе). При перегрузке методы могут иметь разные наборы параметров, а при переопределении сигнатура метода в подклассе должна быть такой же, как и в суперклассе.
Last updated
Was this helpful?