Abo
  • IT-Karriere:

Klassen mit zwei Konstruktoren und Properties

In Kotlin besitzen Klassen einen primären und bei Bedarf weitere sekundäre Konstruktoren. Die Parameter des primären Konstruktors werden hinter dem Schlüsselwort constructor notiert:

Stellenmarkt
  1. Wirecard Technologies GmbH, Aschheim bei München
  2. Lufthansa Industry Solutions AS GmbH, Norderstedt, Raunheim

  1. class Auto constructor(t: Int) {
  2. // Properties:
  3. val tueren: Int = t
  4. var farbe: String = "Rot"
  5. get() = field.toUpperCase()
  6. set(value) {
  7. field = value.toLowerCase()
  8. }
  9.  
  10. // Primärer Konstruktor:
  11. init {
  12. println("Anzahl Türen: ${tueren}.")
  13. }
  14. // Sekundärer Konstruktor:
  15. constructor(t: Int, f: String) : this(t) { farbe = f }
  16. }
  17.  
  18. fun main(args: Array<String>) {
  19. val audi = Auto(5) // Objekt audi erstellen
  20. audi.farbe = "Blau"
  21. println(audi.farbe)
  22. }

Properties als Objektvariablen

Daten speichert ein Objekt in speziellen Variablen, die Kotlin als Properties bezeichnet. Die Klasse Auto besitzt die zwei Properties tueren und farbe. Sofern der Konstruktor lediglich die Variablen mit Werten füllt, erlaubt Kotlin die Kurzschreibweise

  1. class Auto(val tueren: Int) { ... }.

Das Property tueren erhält dabei automatisch den Wert, den man dem Objekt bei seiner Instanziierung mit auf den Weg gibt. Speichert eine Klasse nur Daten, kann man sie folglich in nur einer Zeile deklarieren:

  1. class Person(val name: String, val ort: String)

Stellt man noch ein data voran, ergänzt der Compiler automatisch ein paar nützliche Methoden wie copy() oder equal().

In der Klasse Auto demonstriert das Property farbe den Einsatz von Getter- und Setter-Methoden: Weist man später dem Property einen Wert zu (etwa via audi.farbe = "Blau"), ruft Kotlin automatisch die set()-Funktion auf. Analog führt Kotlin get() beim Zugriff auf die Variable aus. Auf diese Weise kann man die Farbe noch vor der Speicherung beziehungsweise Rückgabe manipulieren. Dabei gibt es allerdings eine Stolperfalle: Würde set() direkt dem Property farbe einen Wert zuweisen (via farbe = value.toLowerCase()), würde set() immer wieder rekursiv aufgerufen. Dies verhindert das Schlüsselwort field, das den Wert in einem sogenannten Backing Field speichert.

Ein Objekt kann Kotlin in mehrere Variablen zerlegen (Destructuring Declarations). In folgendem Beispiel entstehen die Variablen plz und ortsname, welche die Werte aus den Properties des Objekts berlin enthalten:

  1. val (plz, ortsname) = berlin

 Funktional und voll unter KontrolleGenerische Programmierung und Vererbung 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8.  


Anzeige
Top-Angebote
  1. (aktuell u. a. HP 14-Zoll-Notebook für 389,00€, Asus ROG 27-Zoll-Monitor für 689,00€, Corsair...
  2. 26,99€ (Release am 26. Juli)
  3. 339,00€
  4. 269,00€

Proctrap 29. Okt 2017

immer diese Threadschändung

MiBx 18. Okt 2017

Das ist schon ganz gut so, dass Du zurück gewechselt bist, wenn Du Dich nicht wirklich...

Proctrap 17. Okt 2017

kwt

horotab 05. Okt 2017

Wer Methoden schreibt, die so lang sind, mach idR sowieso etwas falsch. Im Idealfall hat...

demonkoryu 04. Okt 2017

Closures sind nicht "hip" sondern eine nützliche Abstraktion, die in den letzten Jahren...


Folgen Sie uns
       


Backup per Band angesehen

Das Rattern des Roboterarms und Rauschen der Klimaanlage: Golem.de hat sich Bandlaufwerke in Aktion beim Geoforschungszentrum Potsdam angeschaut. Das Ziel: zu erfahren, was die 60 Jahre alte Technik noch immer sinnvoll macht.

Backup per Band angesehen Video aufrufen
Projektorkauf: Lumen, ANSI und mehr
Projektorkauf
Lumen, ANSI und mehr

Gerade bei Projektoren werden auf Plattformen verschiedener Onlinehändler kuriose Angaben zur Helligkeit beziehungsweise Leuchtstärke gemacht - sofern diese überhaupt angegeben werden. Wir bringen etwas Licht ins Dunkel und beschäftigen uns mit Einheiten rund um das Thema Helligkeit.
Von Mike Wobker


    Linux-Gaming: Steam Play or GTFO!
    Linux-Gaming
    Steam Play or GTFO!

    Meine ersten Gaming-Eindrücke nach dem Umstieg von Windows auf Linux sind dank Steam recht positiv gewesen: Doch was passiert, wenn ich die heile Steam-(Play-)Welt verlasse und trotzdem Windows-Spiele unter Linux starten möchte? Meine anfängliche Euphorie weicht Ernüchterung.
    Ein Praxistest von Eric Ferrari-Herrmann

    1. Project Mainline und Apex Google bringt überall Android-Updates, außer am Kernel
    2. Ubuntu Lenovo bietet Laptops mit vorinstalliertem Linux an
    3. Steam Play Tschüss Windows, hallo Linux - ein Gamer zieht um

    Super Mario Maker 2 & Co.: Vom Spieler zum Gamedesigner
    Super Mario Maker 2 & Co.
    Vom Spieler zum Gamedesigner

    Dreams, Overwatch Workshop und Super Mario Maker 2: Editoren für Computerspiele werden immer mächtiger, inzwischen können auch Einsteiger komplexe Welten bauen. Ein Überblick.
    Von Achim Fehrenbach

    1. Nintendo Switch Wenn die Analogsticks wandern
    2. Nintendo Akku von überarbeiteter Switch schafft bis zu 9 Stunden
    3. Hybridkonsole Nintendo überarbeitet offenbar Komponenten der Switch

      •  /