Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Klasoj kaj objektoj / Heredo

Superregi metodojn

Ida klaso povas provizi sian propran version de heredita metodo. Tio nomiĝas superregi. Kiam la metodo estas vokata sur objekto de la ida klaso, la versio de la ido ruliĝas anstataŭ tiu de la patro.

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 kaj Cat ĉiu superregas speak. La metodo intro, heredita senŝanĝe de Animal, vokas self.speak — kaj tiu voko uzas tiun speak, kiu apartenas al la efektiva objekto:

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

Do la sama heredita intro produktas malsamajn rezultojn, ĉar ĉiu objekto alportas sian propran speak. Ĉi tio estas unu el la centraj ideoj de objekt-orientita programado: kunhavata kodo, kiu adaptiĝas al la specifa speco de objekto, sur kiu ĝi laboras.

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.

Kursa navigado

Heredo   |   Kvizo — Heredo


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.