Sobes.tech
Junior

Kdy je metoda považována za přepsanou (overriding)?

sobes.tech AI

Odpověď od AI

Metoda se považuje za přepsanou (overriding) v objektově orientovaném programování, když:

  1. Je definována v podtřídě se stejným názvem, typem návratu a seznamem parametrů (signaturou) jako metoda v nadtřídě.
  2. Metoda nadtřídy není private.
  3. Metoda v podtřídě nemá přísnější přístupový modifikátor než metoda v nadtřídě.
  4. V případě výjimek, přepsaná metoda nemůže deklarovat kontrolované výjimky ([checked exceptions]), které jsou obecnější než ty deklarované v přepisované metodě.

Při volání přepsané metody na objektu podtřídy se vykoná verze metody z podtřídy. To je příklad polymorfismu za běhu.

Příklad v Java:

// java

class Animal {
    public void makeSound() {
        System.out.println("Obecný zvuk zvířete");
    }
}

class Dog extends Animal {
    @Override // Anotace @Override potvrzuje, že metoda je přepsána
    public void makeSound() {
        System.out.println("Haf haf");
    }
}

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