Abo
  • Services:

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:

Stellenmarkt
  1. Wanzl Metallwarenfabrik GmbH, Leipheim
  2. Hanseatisches Personalkontor, Bremen

  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 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8.  


Anzeige
Spiele-Angebote
  1. (-78%) 1,11€
  2. 59,99€ mit Vorbesteller-Preisgarantie
  3. 12,99€ + 1,99€ Versand oder Abholung im Markt
  4. 59,99€ mit Vorbesteller-Preisgarantie

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
       


Lenovo Moto G6 - Test

Bei einem Smartphone für 250 Euro müssen sich Käufer oft auf Kompromisse einstellen. Beim Moto G6 halten sie sich aber in Grenzen.

Lenovo Moto G6 - Test Video aufrufen
Krankenversicherung: Der Papierkrieg geht weiter
Krankenversicherung
Der Papierkrieg geht weiter

Die Krankenversicherung der Zukunft wird digital und direkt, aber eine tiefgreifende Disruption des Gesundheitswesens à la Amazon wird in Deutschland wohl ausbleiben. Die Beharrungskräfte sind zu groß.
Eine Analyse von Daniel Fallenstein

  1. Imagen Tech KI-System Osteodetect erkennt Knochenbrüche
  2. Medizintechnik Implantat wird per Ultraschall programmiert
  3. Telemedizin Neue Patienten für die Onlinepraxis

Windenergie: Wie umweltfreundlich sind Offshore-Windparks?
Windenergie
Wie umweltfreundlich sind Offshore-Windparks?

Windturbinen auf hoher See liefern verlässlich grünen Strom. Frei von Umwelteinflüssen sind sie aber nicht. Während die eine Tierart profitiert, leidet die andere. Doch Abhilfe ist in Sicht.
Ein Bericht von Daniel Hautmann

  1. Hywind Scotland Windkraft Ahoi

VR-Rundschau: Retten rockende Jedi-Ritter die virtuelle Realität?
VR-Rundschau
Retten rockende Jedi-Ritter die virtuelle Realität?

Der mediale Hype um VR ist zwar abgeflaut, spannende Inhalte dafür gibt es aber weiterhin - und das nicht nur im Games-Bereich. Mit dabei: das beliebteste Spiel bei Steam, Jedi-Ritter auf Speed und ägyptische Grabkammern.
Ein Test von Achim Fehrenbach

  1. Oculus Core 2.0 Windows 10 wird Minimalanforderung für Oculus Rift
  2. Virtual Reality BBC überträgt Fußball-WM in der virtuellen VIP-Loge
  3. VR-Brillen Google experimentiert mit Lichtfeldfotografie

    •  /