Sobes.tech
Junior

Wanneer wordt een methode als overschreven (overriding) beschouwd?

sobes.tech AI

Antwoord van AI

Een methode wordt als overschreven beschouwd wanneer een methode in een afgeleide klasse wordt gedeclareerd met dezelfde handtekening (methode naam, aantal en types parameters in dezelfde volgorde) als de methode in de basisklasse. Daarnaast:

  1. Mag de methode in de basisklasse niet als final (of een gelijkwaardige modifier in andere talen) zijn gedeclareerd, wat overschrijving verhindert.
  2. Het toegangsniveau van de overschreven methode in de afgeleide klasse mag niet restrictiever zijn dan dat in de basisklasse.
  3. De overschreven methode kan hetzelfde type retourneren als de methode in de basisklasse, of een covariante type (subtype van het originele type).
  4. De overschreven methode mag geen uitzonderingen werpen die algemener (of incompatibel) zijn dan de in de basismethode gedeclareerde uitzonderingen.
  5. Statische methoden kunnen niet worden overschreven, alleen verborgen (hidden).

Bij het aanroepen van de overschreven methode via een referentie naar de basisklasse, maar met een object van de afgeleide klasse, wordt de versie van de afgeleide klasse uitgevoerd (polymorfisme).

// Voorbeeld in Java

class Parent {
    public void display() { // Methode in de basisklasse
        System.out.println("Parent display");
    }

    // final void cannotOverride() { ... } // Deze methode kan niet worden overschreven
}

class Child extends Parent {
    @Override // De annotatie @Override helpt de compiler te controleren of de methode daadwerkelijk wordt overschreven
    public void display() { // Overschreven methode - dezelfde handtekening
        System.out.println("Child display");
    }
}