Abo
  • Services:
Anzeige
Kotlin ist ein Leuchtturmprojekt für die Android-Entwicklung.
Kotlin ist ein Leuchtturmprojekt für die Android-Entwicklung. (Bild: Jetbrains/Apache License 2.0)

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:

  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. }

Anzeige

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 

eye home zur Startseite
Proctrap 29. Okt 2017

immer diese Threadschändung

Themenstart

MiBx 18. Okt 2017

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

Themenstart

horotab 05. Okt 2017

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

Themenstart

demonkoryu 04. Okt 2017

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

Themenstart

Kommentieren



Anzeige

Stellenmarkt
  1. Consors Finanz, München
  2. Markem-Imaje GmbH, Karlsruhe
  3. Continental AG, Lindau am Bodensee, Frankfurt
  4. TUI InfoTec GmbH, Hannover


Anzeige
Hardware-Angebote
  1. 89,90€ + 3,99€ Versand (Vergleichspreis ca. 140€)
  2. (reduzierte Überstände, Restposten & Co.)
  3. und Destiny 2 gratis erhalten

Folgen Sie uns
       


  1. Snpr External Graphics Enclosure

    KFA2s Grafikbox samt Geforce GTX 1060 kostet 500 Euro

  2. IOS 11 und iPhone X

    Das Super-Retina-Display braucht nur wenige Anpassungen

  3. Polyphony Digital

    GT Sport bekommt Einzelspielerliga

  4. Smartphone-Tarife

    Congstar wertet Prepaid-Pakete auf

  5. Rauschgifthandel

    BKA nimmt "Top-Verkäufer" aus dem Darknet fest

  6. Toyota

    Roboter T-HR3 meldet sich zum Arbeitseinsatz

  7. FixFifa

    Fans von Fifa 18 drohen mit Boykott

  8. Samsung

    Erste Details zum Galaxy S9

  9. Cyber Monday

    Streiks an drei Amazon-Standorten

  10. Echo Show vs. Fire HD 10 im Test

    Alexa, zeig's mir!



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Universal Paperclips: Mit ein paar Sexdezillionen Büroklammern die Welt erobern
Universal Paperclips
Mit ein paar Sexdezillionen Büroklammern die Welt erobern
  1. Pocket Camp Animal Crossing baut auf Smartphones
  2. Disney Marvel Heroes wird geschlossen
  3. Free to Play World of Tanks bringt pro Nutzer und Monat 3,30 Dollar ein

Smartphoneversicherungen im Überblick: Teuer und meistens überflüssig
Smartphoneversicherungen im Überblick
Teuer und meistens überflüssig
  1. Winphone 5.0 Trekstor will es nochmal mit Windows 10 Mobile versuchen
  2. Smartphone-Kameras im Test Die beste Kamera ist die, die man dabeihat
  3. Librem 5 Das freie Linux-Smartphone ist finanziert

Erneuerbare Energien: Siemens leitet die neue Steinzeit ein
Erneuerbare Energien
Siemens leitet die neue Steinzeit ein
  1. Siemens und Schunk Akkufahrzeuge werden mit 600 bis 1.000 Kilowatt aufgeladen
  2. Parkplatz-Erkennung Bosch und Siemens scheitern mit Pilotprojekten

  1. Re: War klar

    IcyTouch | 12:33

  2. Re: Empfänger

    tha_specializt | 12:33

  3. Re: FireHD 10 und der Amazon App Store

    carp | 12:32

  4. Re: Solche Lootboxen gibt es doch schon ewig....

    dergnu | 12:32

  5. Servos = Holzweg

    FreierLukas | 12:32


  1. 12:30

  2. 11:59

  3. 11:51

  4. 11:45

  5. 11:30

  6. 11:02

  7. 10:39

  8. 10:30


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel