Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Klassen und Objekte / Klassen
Typobjekte und Instanzen
Wenn Sie einen Klassennamen wie Dog schreiben, beziehen
Sie sich auf das Typobjekt der Klasse. Das Typobjekt steht für
den Typ selbst, nicht für ein bestimmtes Objekt dieses Typs. Eine
Instanz, mit new erzeugt, ist ein tatsächliches
Objekt.
Raku kann die beiden unterscheiden. Die Methode defined
liefert False für ein Typobjekt und True für
eine Instanz:
class Dog {
}
say Dog.defined; # False
say Dog.new.defined; # TrueEin Typobjekt gilt als undefiniert, weil es keine konkreten Daten enthält — es ist lediglich die Beschreibung eines Typs. Eine Instanz ist definiert: Sie ist ein echtes Objekt.
Beide melden über WHAT denselben Typ, das Sie im Abschnitt über Container
kennengelernt haben:
class Dog {
}
say Dog.WHAT; # (Dog)
say Dog.new.WHAT; # (Dog)Die Klammern um (Dog) sind Rakus Art, einen Typ
darzustellen. Dog und Dog.new teilen sich also
den Typ Dog; der Unterschied ist, dass das eine der Typ
selbst ist und das andere ein Objekt dieses Typs.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Kursnavigation
← Klassen | Quiz — Klassen →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.