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

Typeobjecten en instanties

Als je een klassenaam als Dog schrijft, verwijs je naar het typeobject van de klasse. Het typeobject stelt het type zelf voor, niet een bepaald object van dat type. Een instantie, gemaakt met new, is een echt object.

Raku kan de twee uit elkaar houden. De methode defined geeft False terug voor een typeobject en True voor een instantie:

class Dog {
}

say Dog.defined;     # False
say Dog.new.defined; # True

Een typeobject geldt als ongedefinieerd omdat het geen concrete gegevens bevat — het is slechts de beschrijving van een type. Een instantie is gedefinieerd: het is een echt object.

Beide melden hetzelfde type via WHAT, dat je tegenkwam in de sectie over containers:

class Dog {
}

say Dog.WHAT;     # (Dog)
say Dog.new.WHAT; # (Dog)

De haakjes om (Dog) zijn Raku’s manier om een type te tonen. Dus Dog en Dog.new delen het type Dog; het verschil is dat het ene het type zelf is en het andere een object van dat type.

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Cursusnavigatie

Klassen   |   Quiz — Klassen


💪 Of ga direct naar de oefeningen in deze sectie.