Перегрузка (overloading) и переопределение (overriding)

  1. Перегрузка (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);
        }
    }
  2. Переопределение (overriding):

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

    // Родительский класс
    class Animal {
        void sound() {
            System.out.println("Животное издает звук");
        }
    }
    
    // Подкласс, переопределяющий метод родительского класса
    class Dog extends Animal {
        void sound() {
            System.out.println("Собака лает");
        }
    }

Отличие между перегрузкой и переопределением заключается в том, что перегрузка происходит в одном классе, а переопределение - в иерархии классов (суперклассе и подклассе). При перегрузке методы могут иметь разные наборы параметров, а при переопределении сигнатура метода в подклассе должна быть такой же, как и в суперклассе.

Last updated