Подтвердить что ты не робот

В чем разница между перегрузкой и переопределением метода?

В чем разница между перегрузкой метода и переопределением метода? Может ли кто-нибудь объяснить это на примере?

4b9b3361

Ответ 1

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

void foo(int a)
void foo(int a, float b)

Метод переопределение означает наличие двух методов с теми же аргументами, но с различными реализациями. Один из них будет существовать в родительском классе, а другой - в производном или дочернем классе. Аннотация @Override, хотя и не обязательная, может помочь обеспечить надлежащее переопределение метода во время компиляции.

class Parent {
    void foo(double d) {
        // do something
    }
}

class Child extends Parent {

    @Override
    void foo(double d){
        // this method is overridden.  
    }
}

Ответ 2

Переопределение метода - это когда дочерний класс переопределяет тот же метод, что и родительский класс, с теми же параметрами. Например, стандартный Java-класс java.util.LinkedHashSet расширяет java.util.HashSet. Метод add() переопределяется в LinkedHashSet. Если у вас есть переменная типа HashSet, и вы вызываете ее метод add(), она будет вызывать соответствующую реализацию add(), исходя из того, является ли она HashSet или LinkedHashSet. Это называется полиморфизмом.

Перегрузка метода определяет несколько методов в одном классе, которые принимают разные числа и типы параметров. В этом случае фактический вызванный метод определяется во время компиляции на основе количества и типов аргументов. Например, метод System.out.println() перегружен, так что вы можете передавать ints и Strings, и он вызывается другой версией метода.