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)

Schnittstellen sind auch nur Klassen

Dient eine Klasse als Ausgangspunkt in der Vererbungshierarchie, gibt sie häufig nur einen Satz Funktionen vor, den dann alle abgeleiteten Klassen anbieten müssen. Kotlin unterstützt dies mit Interfaces und abstrakten Klassen. Letztgenannte sind Klassen, deren Methoden jedoch keine Implementierung enthalten. Abstrakte Klassen kennzeichnen Entwickler mit einem vorangestellten abstract. Interfaces wiederum sind normale Klassen, die aber keinen Zustand speichern. Interfaces können folglich nur dann Properties enthalten, wenn man ihnen keinen Wert zuweist oder sie eine Getter-Funktion besitzen:

Anzeige

  1. interface Figur {
  2. val groesse: Int
  3. val farbe: String
  4. get() = "Rot"
  5. fun eigenschaften() {
  6. println(farbe)
  7. }
  8. }
  9.  
  10. class Rechteck : Figur {
  11. override val groesse: Int = 3
  12. }

Bisweilen soll eine Klasse die eigentliche Arbeit an ein ganz bestimmtes Objekt abtreten. Koltin unterstützt diese Delegation von Haus aus, sofern die Klasse und das Objekt das gleiche Interface implementieren:

  1. class MeineFigur(r: Figur) : Figur by r
  2. val r = Rechteck()
  3. MeineFigur(r).eigenschaften()

Durch das Schlüsselwort by fügt der Compiler der Klasse MeineFigur für jede Funktion aus dem Interface Figur eine Funktion hinzu, die ihre gleichnamigen Kolleginnen im Objekt r aufrufen.

Alleine in der Fabrik

Mit object kann man direkt Objekte erstellen und so elegant das Entwurfsmuster Singleton umsetzen:

  1. object BlaueMauritius {
  2. var farbe: String = "Blau"
  3. fun anmalen(f: String) { farbe = f }
  4. }
  5. BlaueMauritius.anmalen("Gelb")

Bringt man eine Objekt-Deklaration in einer Klasse unter und stellt ihr companion voran, lassen sich die Funktionen und Properties des Objekts von außen nutzen. Damit ist das Factory-Entwurfsmuster schnell implementiert:

  1. class Auto {
  2. companion object Factory {
  3. fun neu(): Auto = Auto()
  4. }
  5. }
  6. val bmw = Auto.neu()

Namenlose Übergabe

In Kotlin können Funktionen andere Funktionen als Parameter entgegennehmen und wieder Funktionen zurückliefern (Higher-Order Function):

  1. fun berechne(foo: (Int) -> Int): Int {
  2. return foo()
  3. }

Hier möchte berechne() eine Funktion übergeben bekommen, die eine Zahl entgegennimmt und ein Objekt vom Typ Int zurückliefert. In Kotlin kann man die zu übergebene Funktion in Form des sogenannten Lambda-Ausdrucks direkt in den Aufruf schreiben:

  1. sortiere(zahlen, {x: Int, y: Int -> x < y})

Sofern der letzte Parameter eine Funktion ist und man einen Lambda-Ausdruck übergibt, darf man eine Kurzschreibweise verwenden:

  1. sortiere(zahlen) {x,y -> x < y}

 Generische Programmierung und VererbungNebenläufigkeit und kein null 

eye home zur Startseite
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...



Anzeige

Stellenmarkt
  1. Dirk Rossmann GmbH, Burgwedel
  2. Dataport, Hamburg
  3. Robert Bosch Car Multimedia GmbH, Hildesheim
  4. Teradata GmbH, Düsseldorf


Anzeige
Blu-ray-Angebote
  1. 61,99€
  2. 24,99€ (Vorbesteller-Preisgarantie)
  3. (u. a. Hobbit Trilogie Blu-ray 43,89€ und Batman Dark Knight Trilogy Blu-ray 17,99€)

Folgen Sie uns
       


  1. Umwelt

    China baut 100-Meter-Turm für die Luftreinigung

  2. Marktforschung

    Viele Android-Apps kollidieren mit kommendem EU-Datenschutz

  3. Sonic Forces

    Offenbar aktuellste Version von Denuvo geknackt

  4. KWin

    KDE beendet Funktionsentwicklung für X11

  5. Sprachassistenten

    Alexa ist Feministin

  6. Elektromobilität

    Elektroautos werden langsam beliebter in Deutschland

  7. Crypto-Bibliothek

    OpenSSL bekommt Patch-Dienstag und wird transparenter

  8. Spectre und Meltdown

    Kleine Helferlein überprüfen den Rechner

  9. Anfrage

    Senat sieht sich für WLAN im U-Bahn-Tunnel nicht zuständig

  10. Gaming

    Über 3 Millionen deutsche Spieler treiben regelmäßig E-Sport



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Netzsperren: Wie Katalonien die spanische Internetzensur austrickste
Netzsperren
Wie Katalonien die spanische Internetzensur austrickste

Spectre und Meltdown: All unsere moderne Technik ist kaputt
Spectre und Meltdown
All unsere moderne Technik ist kaputt
  1. E-Mail-Konto 90 Prozent der Gmail-Nutzer nutzen keinen zweiten Faktor
  2. BeA Noch mehr Sicherheitslücken im Anwaltspostfach
  3. VEP Charter Trump will etwas transparenter mit Sicherheitslücken umgehen

Star Citizen Alpha 3.0 angespielt: Es wird immer schwieriger, sich auszuloggen
Star Citizen Alpha 3.0 angespielt
Es wird immer schwieriger, sich auszuloggen
  1. Cloud Imperium Games Star Citizen bekommt erst Polituren und dann Reparaturen
  2. Star Citizen Reaktionen auf Gameplay und Bildraten von Alpha 3.0
  3. Squadron 42 Mark Hamill fliegt mit 16 GByte RAM und SSD

  1. Re: Siri ist btw. nicht weiblich...

    stiGGG | 23:27

  2. Re: ... und die amerikanischen Firmen...

    AlexKw | 23:25

  3. Re: Migration X11 -> Wayland

    Seitan-Sushi-Fan | 23:22

  4. Re: MMO + Survival, nicht MMORPG

    sodom1234 | 23:21

  5. Re: Drei allein soll die Nummer sein, die du zählest

    ZuWortMelder | 23:19


  1. 18:19

  2. 17:43

  3. 17:38

  4. 15:30

  5. 15:02

  6. 14:24

  7. 13:28

  8. 13:21


  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