Corso di Raku / Oggetti, input/output ed eccezioni / Classi e oggetti

Ereditarietà

L’ereditarietà permette a una classe di costruire su un’altra. Una classe dichiarata con is dopo il proprio nome eredita gli attributi e i metodi della classe che nomina — la sua classe genitrice (o base).

class Animal {
    has $.name;
    method speak {
        'some sound';
    }
}

class Dog is Animal {
}

Dog is Animal significa che un Dog è un tipo di Animal. Senza scrivere nulla di nuovo, Dog ha già l’attributo name e il metodo speak di Animal:

my $rex = Dog.new(name => 'Rex');
say $rex.name;  # Rex
say $rex.speak; # some sound

Un oggetto Dog viene riconosciuto anche come Animal:

say Dog.new ~~ Animal; # True

Lo smart-match ~~ contro un tipo è vero quando l’oggetto è di quel tipo o ne eredita. L’argomento successivo mostra come una classe figlia possa sostituire un metodo ereditato con una versione propria.

Anche in questa sezione

Pratica

Risolvi 1 quiz sul contenuto di questa sezione.

Esercizi

Questa sezione contiene 3 esercizi. Guarda tutti gli argomenti di questa sezione prima di iniziare gli esercizi.

  1. Dipendenti e ruoli
  2. Una figura e un quadrato
  3. Un attributo ereditato

Quiz — Subroutine e metodi   |   Sovrascrivere i metodi