• IT-Karriere:
  • 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. Allianz Versicherungs-AG, München Unterföhring
  2. Vodafone GmbH, Kaiserslautern

  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

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 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. (u. a. Take Two Promo (u. a. Borderlands: The Handsome Collection für 13,99€), Wormageddon...
  2. (u. a. Sony WH-CH510 Bluetooth Kopfhörer + Spider-Man: Far From Home (Blu-ray) für 33,63€)
  3. 279€ (Bestpreis!)
  4. 42,49€ (mit Aktionscode "GESCHENK5" - Bestpreis!)

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
       


Google Pixel 4a - Test

Das Pixel 4a ist Googles neues Mittelklasse-Smartphone: Es kostet 350 Euro und hat unter anderem die gleiche Hauptkamera wie das Pixel 4.

Google Pixel 4a - Test Video aufrufen
Cyberbunker-Prozess: Die Darknet-Schaltzentrale über den Weinbergen
Cyberbunker-Prozess
Die Darknet-Schaltzentrale über den Weinbergen

Am Montag beginnt der Prozess gegen die Cyberbunker-Betreiber von der Mittelmosel. Dahinter verbirgt sich eine wilde Geschichte von "bunkergeilen" Internetanarchos bis zu polizeilich gefakten Darknet-Seiten.
Eine Recherche von Friedhelm Greis

  1. Darkweb 179 mutmaßliche Darknet-Händler festgenommen
  2. Marktplatz im Darknet Mutmaßliche Betreiber des Wall Street Market angeklagt
  3. Illegaler Onlinehandel Admin des Darknet-Shops Fraudsters muss hinter Gitter

Oneplus 8T im Test: Oneplus gutes Gesamtpaket kostet 600 Euro
Oneplus 8T im Test
Oneplus gutes Gesamtpaket kostet 600 Euro

Das Oneplus 8 wird durch das 8T abgelöst. Im Test überzeugen vor allem die Kamera und die Ladegeschwindigkeit. Ein 8T Pro gibt es 2020 nicht.
Ein Test von Tobias Költzsch

  1. Bloatware Oneplus installiert keine Facebook-Dienste mehr vor
  2. Smartphone Oneplus 8 und 8 Pro bekommen Android 11
  3. Mobile Neues Oneplus-Smartphone für 200 US-Dollar erwartet

Artemis Accords: Mondverträge mit bitterem Beigeschmack
Artemis Accords
Mondverträge mit bitterem Beigeschmack

"Sicherheitszonen" zum Rohstoffabbau auf dem Mond, das Militär darf tun, was es will, Machtfragen werden nicht geklärt, der Weltraumvertrag wird gebrochen.
Von Frank Wunderlich-Pfeiffer

  1. Artemis Nasa engagiert Nokia für LTE-Netz auf dem Mond

    •  /