В объектно-ориентированном программировании перегрузка и переопределение — это две важные концепции, связанные с методами (функциями) в классах. Вот разница между перегрузкой и переопределением:
- Перегрузка:
Перегрузка означает возможность определять несколько методов с одинаковым именем, но с разными параметрами в одном классе. Компилятор различает эти методы по количеству, порядку и типам параметров. Ключевые моменты о перегрузке:
- Перегрузка позволяет классу иметь несколько методов с одинаковым именем, но разными списками параметров.
- Методы должны иметь разные параметры (либо разные типы, либо разное количество параметров).
- Перегруженные методы отличаются своими сигнатурами (типами и порядком параметров).
- Перегрузка определяется во время компиляции на основе вызова метода и предоставленных аргументов.
Пример:
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
В приведенном выше примере класс Calculatorимеет два метода add: один для целых чисел, другой для двойных чисел, что позволяет выполнять сложение с числами разных типов.
- Переопределение.
С другой стороны, переопределение — это способность подкласса предоставлять конкретную реализацию метода, который уже определен в его суперклассе. Ключевые моменты переопределения:
- Переопределение происходит, когда подкласс предоставляет конкретную реализацию метода, который уже определен в его суперклассе.
- Метод в подклассе должен иметь то же имя, тип возвращаемого значения и список параметров, что и метод в суперклассе.
- Переопределение используется для реализации полиморфизма во время выполнения, при котором выполняемый метод определяется фактическим типом объекта во время выполнения.
Пример:
class Animal {
public void makeSound() {
System.out.println("Animal is making a sound");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow");
}
}
В приведенном выше примере класс Catпереопределяет метод makeSoundкласса Animal, обеспечивая собственную реализацию.