Sobes.tech
Junior

Mikor számít egy módszer felülírtnak (overriding)?

sobes.tech MI

Válasz az MI-től

Az objektumorientált programozásban a metódus akkor tekinthető felülírt (overriding), ha:

  1. Egy alosztályban van definiálva ugyanazzal a névvel, visszatérési típussal és paraméterlistával (szignatúrával), mint a szuperosztályban lévő metódus.
  2. A szuperosztálybeli metódus nem private.
  3. Az alosztálybeli metódus nem rendelkezik szigorúbb hozzáférési módosítóval, mint a szuperosztálybeli.
  4. Kivétel esetén a felülírt metódus nem deklarálhat ellenőrzött kivételt ([checked exception]), amely általánosabb, mint a felülírt metódusban deklarált kivétel.

A felülírt metódus hívásakor egy alosztály példányán a subclase-ből származó verzió fut le. Ez egy példája a futási időben történő polimorfizmusnak.

Java példa:

// java

class Animal {
    public void makeSound() {
        System.out.println("Általános állati hang");
    }
}

class Dog extends Animal {
    @Override // Az @Override annotáció megerősíti, hogy a metódus felülírásra került
    public void makeSound() {
        System.out.println("Vau vau");
    }
}

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