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. MediaNet GmbH Netzwerk- und Applikations-Service, Freiburg im Breisgau
  2. Bosch Gruppe, Ludwigsburg

  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
Blu-ray-Angebote
  1. 34,99€

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 Thinkpad X1 Extreme - Hands on (Ifa 2018)

Das Lenovo Thinkpad X1 Extreme wird das neue Top-Notebook des Unternehmens. Wir haben es samt Docking-Station auf der Ifa 2018 ausprobiert.

Lenovo Thinkpad X1 Extreme - Hands on (Ifa 2018) Video aufrufen
Lenovo Thinkpad T480s im Test: Das trotzdem beste Business-Notebook
Lenovo Thinkpad T480s im Test
Das trotzdem beste Business-Notebook

Mit dem Thinkpad T480s verkauft Lenovo ein exzellentes 14-Zoll-Business-Notebook. Anschlüsse und Eingabegeräte überzeugen uns - leider ist aber die CPU konservativ eingestellt und ein gutes Display kostet extra.
Ein Test von Marc Sauter und Sebastian Grüner

  1. Thinkpad E480/E485 im Test AMD gegen Intel in Lenovos 14-Zoll-Notebook
  2. Lenovo Das Thinkpad P1 ist das X1 Carbon als Workstation
  3. Thinkpad Ultra Docking Station im Test Das USB-Typ-C-Dock mit robuster Mechanik

Segelflug: Die Höhenflieger
Segelflug
Die Höhenflieger

In einem Experimental-Segelflugzeug von Airbus wollen Flugenthusiasten auf gigantischen Luftwirbeln am Rande der Antarktis fast 30 Kilometer hoch aufsteigen - ganz ohne Motor. An Bord sind Messinstrumente, die neue und unverfälschte Daten für die Klimaforschung liefern.
Ein Bericht von Daniel Hautmann

  1. Luftfahrt Nasa testet leise Überschallflüge
  2. Low-Boom Flight Demonstrator Lockheed baut leises Überschallflugzeug
  3. Elektroflieger Norwegen will elektrisch fliegen

Gesetzesentwurf: So will die Regierung den Abmahnmissbrauch eindämmen
Gesetzesentwurf
So will die Regierung den Abmahnmissbrauch eindämmen

Obwohl nach Inkrafttreten der DSGVO eine Abmahnwelle ausgeblieben ist, will Justizministerin Barley nun gesetzlich gegen missbräuchliche Abmahnungen vorgehen. Damit soll auch der "fliegende Gerichtsstand" im Wettbewerbsrecht abgeschafft werden.
Von Friedhelm Greis


      •  /