Sobes.tech
Junior

Kiedy metoda jest uważana za nadpisaną (overriding)?

sobes.tech AI

Odpowiedź od AI

Metoda jest uważana za nadpisaną (overriding) w programowaniu obiektowym, gdy:

  1. Jest zdefiniowana w podklasie z tym samym nazwą, typem zwracanym i listą parametrów (sygnaturą), co metoda w superklasie.
  2. Metoda w superklasie nie jest private.
  3. Metoda w podklasie nie ma bardziej restrykcyjnego modyfikatora dostępu niż metoda w superklasie.
  4. W przypadku wyjątków, nadpisująca metoda nie może deklarować sprawdzanych wyjątków ([checked exceptions]), które są bardziej ogólne niż te zadeklarowane w nadpisywanej metodzie.

Przy wywołaniu nadpisanej metody na obiekcie podklasy, wykonywana jest wersja metody z podklasy. To jest przykład polimorfizmu w czasie wykonywania.

Przykład w Java:

// java

class Animal {
    public void makeSound() {
        System.out.println("Ogólny dźwięk zwierzęcia");
    }
}

class Dog extends Animal {
    @Override // Adnotacja @Override potwierdza, że metoda została nadpisana
    public void makeSound() {
        System.out.println("Hau hau");
    }
}

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