Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Klassen und Objekte

Attribute

Eine leere Klasse ist nicht besonders nützlich. Damit ein Objekt eigene Daten tragen kann, geben Sie der Klasse Attribute. Ein Attribut wird innerhalb der Klasse mit dem Schlüsselwort has deklariert:

class Dog {
    has $.name;
    has $.age;
}

Jedes Objekt der Klasse erhält seine eigene Kopie dieser Attribute. Ihre Werte setzen Sie beim Erzeugen des Objekts, indem Sie sie new als benannte Argumente übergeben:

class Dog {
    has $.name;
    has $.age;
}

my $rex = Dog.new(name => 'Rex', age => 3);

Das $. in has $.name tut zweierlei auf einmal: Es deklariert ein Attribut und erzeugt eine gleichnamige Methode — einen Accessor —, die den Wert des Attributs liefert:

say $rex.name; # Rex
say $rex.age;  # 3

Verschiedene Objekte halten ihre eigenen Werte, unabhängig voneinander:

my $rex  = Dog.new(name => 'Rex',  age => 3);
my $fido = Dog.new(name => 'Fido', age => 5);

say $rex.name;  # Rex
say $fido.name; # Fido

Die folgenden Themen zeigen, wie Sie Attribute veränderbar machen und wie Sie ihnen Standardwerte geben. (Es gibt außerdem eine Möglichkeit, private Attribute zu deklarieren, die von außen verborgen sind; darauf kommen wir zurück, sobald Methoden eingeführt sind.)

Themen in diesem Abschnitt

Praxis

Lösen Sie 1 Quiz zum Inhalt dieses Abschnitts.

Übungen

Dieser Abschnitt enthält 4 Übungen. Sehen Sie sich alle Themen dieses Abschnitts an, bevor Sie mit den Übungen beginnen.

  1. Eine Punktklasse
  2. Ein Zähler
  3. Ein Buch
  4. Eine änderbare Beschriftung

Kursnavigation

Lösung: Nennen Sie den Typ   |   Les- und schreibbare Attribute