Переопределение метода (method overriding) в Java

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

Основные правила переопределения метода:

  1. Метод в подклассе должен иметь ту же сигнатуру, что и метод в суперклассе (то есть, то же имя, те же параметры и тот же тип возвращаемого значения или его подтип).
  2. Метод в подклассе должен быть не менее доступным, чем метод в суперклассе. Например, если метод суперкласса объявлен как public, то метод в подклассе не может быть protected или private.
  3. Методы, которые объявлены как final или static в суперклассе, не могут быть переопределены.

Пример переопределения метода

class Animal {
void makeSound() {
System.out.println("Some generic animal sound");
}
}

class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Bark");
}
}

class Cat extends Animal {
@Override
void makeSound() {
System.out.println("Meow");
}
}

public class MethodOverridingExample {
public static void main(String[] args) {
Animal myAnimal = new Animal();
Animal myDog = new Dog();
Animal myCat = new Cat();

myAnimal.makeSound(); // Output: Some generic animal sound
myDog.makeSound(); // Output: Bark
myCat.makeSound(); // Output: Meow
}
}

Объяснение

  1. Класс Animal: Содержит метод makeSound(), который выводит “Some generic animal sound”.
  2. Класс Dog: Переопределяет метод makeSound(), чтобы вывести “Bark”.
  3. Класс Cat: Переопределяет метод makeSound(), чтобы вывести “Meow”.
  4. Метод main:
    • Создает объекты Animal, Dog, и Cat.
    • При вызове метода makeSound() для каждого объекта вызывается версия метода, соответствующая типу объекта во время выполнения.

Таким образом, переопределение методов позволяет подклассам предоставлять специализированные версии методов суперклассов, обеспечивая полиморфизм и расширяемость в объектно-ориентированном программировании.

Каталог и рейтинг онлайн-курсов программирования Джава
Logo