Abo
  • Services:

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. Stadtwerke Bonn GmbH, Bonn
  2. TÜV SÜD Gruppe, München

  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. 399,00€ (Wert der Spiele rund 212,00€)
  2. (u. a. Pro Evolution Soccer 2019 8,50€, Styx: Shards of Darkness 9,99€)
  3. (u. a. Far Cry New Dawn 22,49€, Assassin's Creed Odyssey 29,99€)
  4. 62,90€

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
       


Nike Adapt BB ausprobiert

Nikes neue Basketballschuhe Adapt BB schnüren sich automatisch zu, was in unserem Praxistest sehr gut funktioniert.

Nike Adapt BB ausprobiert Video aufrufen
Geforce GTX 1660 im Test: Für 230 Euro eine faire Sache
Geforce GTX 1660 im Test
Für 230 Euro eine faire Sache

Die Geforce GTX 1660 - ohne Ti am Ende - rechnet so flott wie AMDs Radeon RX 590 und kostet in etwa das Gleiche. Der klare Vorteil der Nvidia-Grafikkarte ist die drastisch geringere Leistungsaufnahme.

  1. Nvidia Turing OBS unterstützt Encoder der Geforce RTX
  2. Geforce GTX 1660 Ti im Test Nvidia kann Turing auch günstig(er)
  3. Turing-Grafikkarten Nvidias Geforce 1660/1650 erscheint im März

Zotac Geforce GTX 1660 Ti im Test: Gute 1440p-Karte für unter 300 Euro
Zotac Geforce GTX 1660 Ti im Test
Gute 1440p-Karte für unter 300 Euro

Die Geforce GTX 1660 Ti von Zotac ist eine der günstigen Grafikkarten mit Nvidias Turing-Architektur, dennoch erhalten Käufer ein empfehlenswertes Modell: Der leise Pixelbeschleuniger rechnet praktisch so flott wie übertaktete Modelle, braucht aber weniger Energie.
Ein Test von Marc Sauter

  1. Grafikkarte Chip der Geforce GTX 1660 Ti ist überraschend groß
  2. Deep Learning Supersampling Nvidia will DLSS-Kantenglättung verbessern
  3. Metro Exodus im Technik-Test Richtiges Raytracing rockt

Operation 13: Anonymous wird wieder aktiv
Operation 13
Anonymous wird wieder aktiv

Mehrere Jahre wirkte es, als sei das dezentrale Kollektiv Anonymous in Deutschland eingeschlafen. Doch es bewegt sich etwas, die Aktivisten machen gegen Artikel 13 mobil - auf der Straße wie im Internet.
Von Anna Biselli


      •  /