Sobes.tech
Junior

Wanneer wordt een methode als overschreven beschouwd?

sobes.tech AI

Antwoord van AI

De methode wordt als overschreven beschouwd in de volgende gevallen:

  1. Het is gedeclareerd in een afgeleide klasse.
  2. Het heeft dezelfde naam als de methode in de ouderklasse.
  3. Het heeft dezelfde handtekening (aantal en types van parameters) en volgorde van parameters.
  4. Het heeft een compatibel returntype met dat van de methode in de ouderklasse (covariantie, indien van toepassing).
  5. Het heeft een toegangsspecificator die gelijk of breder is dan die van de methode in de ouderklasse (in de meeste objectgeoriënteerde talen).
  6. De ouderklasse-methode is gedeclareerd als virtueel, abstract of interface (in talen die expliciet aangeven dat overschrijving mogelijk is, bijvoorbeeld C# met het sleutelwoord virtual).

Voorbeeld in Java:

// Ouderklasse
class SuperClass {
    // Methode die overschreven kan worden
    public void display() {
        System.out.println("Dit is de display-methode van SuperClass.");
    }
}

// Afgeleide klasse
class SubClass extends SuperClass {
    // Overschreven display-methode
    @Override // Annotatie om overschrijving te controleren tijdens compilatie
    public void display() {
        System.out.println("Dit is de display-methode van SubClass.");
    }
}

Voorbeeld in Python:

# Ouderklasse
class SuperClass:
    # Methode die overschreven kan worden
    def display(self):
        print("Dit is de display-methode van SuperClass.")

# Afgeleide klasse
class SubClass(SuperClass):
    # Overschreven display-methode
    def display(self):
        print("Dit is de display-methode van SubClass.")

Het belangrijkste is om de naam en handtekening van de methode te behouden, maar het gedrag ervan in de afgeleide klasse te wijzigen.

Belangrijk verschil met overloading:

Overloading is het declareren van meerdere methoden met dezelfde naam in één klasse, maar met verschillende handtekeningen. Overriding is het declareren van een methode in een afgeleide klasse met dezelfde naam en handtekening als in de ouderklasse.