Cursus Raku / Objecten, in- en uitvoer en excepties / Klassen en objecten / Overerving

Methoden overschrijven

Een kindklasse kan haar eigen versie van een geërfde methode aanbieden. Dat heet overschrijven. Wanneer de methode op een object van de kindklasse aangeroepen wordt, draait de versie van het kind in plaats van die van de ouder.

class Animal {
    has $.name;
    method speak {
        'some sound';
    }
    method intro {
        "$.name says " ~ self.speak;
    }
}

class Dog is Animal {
    method speak {
        'Woof';
    }
}

class Cat is Animal {
    method speak {
        'Meow';
    }
}

Dog en Cat overschrijven elk speak. De methode intro, ongewijzigd van Animal geërfd, roept self.speak aan — en die aanroep gebruikt de speak die bij het werkelijke object hoort:

say Dog.new(name => 'Rex').intro; # Rex says Woof
say Cat.new(name => 'Tom').intro; # Tom says Meow

Dezelfde geërfde intro levert dus verschillende resultaten op, omdat elk object zijn eigen speak meebrengt. Dit is een van de centrale ideeën van objectgeoriënteerd programmeren: gedeelde code die zich aanpast aan de specifieke soort object waarmee ze werkt.

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Cursusnavigatie

Overerving   |   Quiz — Overerving


💪 Of ga direct naar de oefeningen in deze sectie.