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. Visteon Electronics Germany GmbH, Karlsruhe
  2. tecmata GmbH, Wiesbaden

  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. (u. a. Motorola Moto G5 für 99€ und Nokia 5 für 129€)
  2. 55,11€ (Bestpreis!)
  3. (aktuell u. a. Seagate Expansion+ Desktop 4 TB für 88€, Seagate Backup Plus Hub 6 TB für...
  4. 17,49€

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
       


Neue OLED-Leuchtmittel angesehen (Light and Building 2018)

Die OLED-Technik macht im Leuchtenbereich Fortschritte.

Neue OLED-Leuchtmittel angesehen (Light and Building 2018) Video aufrufen
Facebook-Anhörung: Zuckerbergs Illusion von der vollen Kontrolle
Facebook-Anhörung
Zuckerbergs Illusion von der vollen Kontrolle

In einer mehrstündigen Anhörung vor dem US-Senat hat Facebook-Chef Mark Zuckerberg sein Unternehmen verteidigt. Doch des Öfteren hinterließ er den Eindruck, als wisse er selbst nicht genau, was er in den vergangenen Jahren da geschaffen hat.
Eine Analyse von Friedhelm Greis

  1. Facebook Messenger Zuckerbergs Nachrichten heimlich auf Nutzerkonten gelöscht
  2. Böswillige Akteure Die meisten der zwei Milliarden Facebook-Profile ausgelesen
  3. DSGVO Zuckerberg will EU-Datenschutz nicht weltweit anwenden

Physik: Maserlicht aus Diamant
Physik
Maserlicht aus Diamant

Ein Stickstoff-Fehlstellen-basierter Maser liefert kontinuierliche und kohärente Mikrowellenstrahlung bei Raumtemperatur. Eine mögliche Anwendung ist die Kommunikation mit Satelliten.
Von Dirk Eidemüller

  1. Xiaoice und Zo Microsoft erforscht menschlicher wirkende Sprachchat-KIs
  2. Hyperschallgeschwindigkeit Projektil schießt sich durch den Boden
  3. Materialforschung Stanen - ein neues Wundermaterial?

HP Z2 Mini Workstation G3 im Test: Leises Rauschen hinterm Monitor
HP Z2 Mini Workstation G3 im Test
Leises Rauschen hinterm Monitor

Unterm Tisch, auf dem Tisch oder hinter den Bildschirm geklemmt: HPs Z2 Mini Workstation ist ein potentes, wenn auch nicht gerade sehr preiswertes Komplettsystem. Den Preis ist der PC aber wert, denn er ist leise, modular und kann einfach gewartet werden. Der Admin dankt!
Ein Test von Oliver Nickel

  1. HP Pavilion Gaming Hardware für Gamer, die sich Omen nicht leisten wollen
  2. Chromebook x2 HP präsentiert Chrome-OS-Detachable mit Stift
  3. Laserjet Pro M15w und M28w HPs Laserdrucker schrumpfen auf 34 Zentimeter Länge

    •  /