Sobes.tech
Junior

Wanneer vindt het overschrijven van een methode (overriding) plaats in programmeren?

sobes.tech AI

Antwoord van AI

Method overschrijving vindt plaats in erfelijkheid, wanneer een subklasse zijn eigen implementatie biedt van een methode die al is gedefinieerd in de superklasse. De methodehandtekening (naam, retourtype en aantal/typen argumenten) moet overeenkomen met die van de methode in de superklasse. Dit maakt polymorfisme mogelijk: een object van de subklasse, gebruikt als een object van de superklasse, roept zijn specifieke implementatie van de methode aan.

Voorbeelden van gebruik:

  • Wijziging van de logica van de geërfde gedrag.
  • Het bieden van een specifieke implementatie voor een gemeenschappelijke interface in de subklasse.

Belangrijke punten:

  • Een is-een relatie is vereist (erfelijkheid).
  • De methodehandtekening moet overeenkomen.
  • De toegangsmodifier kan hetzelfde of minder restrictief zijn dan die van de superklasse.
  • final of static methoden kunnen niet worden overschreven (in de meeste talen).
// Voorbeeld in Java
class Animal {
    public void makeSound() {
        System.out.println("Algemeen dierengeluid");
    }
}

class Dog extends Animal {
    @Override // Annotatie geeft overschrijving aan
    public void makeSound() {
        System.out.println("Woef!");
    }
}

// Gebruik
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Uitvoer: Algemeen dierengeluid
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Uitvoer: Woef! (aangeroepen overschreven methode)
# Voorbeeld in Python
class Animal:
    def make_sound(self):
        print("Algemeen dierengeluid")

class Dog(Animal):
    def make_sound(self): # Overschrijving van de methode
        print("Woef!")

# Gebruik
# animal = Animal()
# animal.make_sound() # Uitvoer: Algemeen dierengeluid
#
# dog = Dog()
# dog.make_sound() # Uitvoer: Woef!