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; # True

Ein 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.