Raku kurss / Objekti, ievade/izvade un izņēmumi / Klases un objekti / Mantošana

Metožu pārrakstīšana

Bērnklase var nodrošināt savu mantotās metodes versiju. To sauc par pārrakstīšanu. Kad metode tiek izsaukta uz bērnklases objekta, vecākklases versijas vietā izpildās bērnklases versija.

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 un Cat katrs pārraksta speak. Metode intro, kas mantota no Animal bez izmaiņām, izsauc self.speak — un šis izsaukums izmanto to speak, kas pieder īstajam objektam:

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

Tātad viena un tā pati mantotā intro dod dažādus rezultātus, jo katrs objekts nes savu speak. Šī ir viena no objektorientētās programmēšanas centrālajām idejām: koplietots kods, kas pielāgojas tam konkrētajam objekta veidam, ar kuru strādā.

Prakse

Jūs gaida 1 viktorīna par šī temata saturu.

Kursa navigācija

Mantošana   |   Viktorīna — Mantošana


💪 Vai arī dodieties tieši uz šīs sadaļas vingrinājumiem.