Abo
  • IT-Karriere:

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. operational services GmbH & Co. KG, Frankfurt am Main, Wolfsburg, Braunschweig, Berlin
  2. VALEO GmbH, Erlangen

  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
Hardware-Angebote
  1. 349,00€
  2. täglich neue Deals bei Alternate.de
  3. ab 369€ + Versand

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
       


Akku-Recycling bei Duesenfeld

Das Unternehmen Duesenfeld aus Peine hat ein Verfahren für das Recycling von Elektroauto-Akkus entwickelt.

Akku-Recycling bei Duesenfeld Video aufrufen
Projektorkauf: Lumen, ANSI und mehr
Projektorkauf
Lumen, ANSI und mehr

Gerade bei Projektoren werden auf Plattformen verschiedener Onlinehändler kuriose Angaben zur Helligkeit beziehungsweise Leuchtstärke gemacht - sofern diese überhaupt angegeben werden. Wir bringen etwas Licht ins Dunkel und beschäftigen uns mit Einheiten rund um das Thema Helligkeit.
Von Mike Wobker


    Erneuerbare Energien: Die Energiewende braucht Wasserstoff
    Erneuerbare Energien
    Die Energiewende braucht Wasserstoff

    Kein anderes Element ist so universell und dabei simpel aufgebaut wie Wasserstoff und das energiereiche Gas lässt sich aus fast jedem Energieträger gewinnen. Genauso vielseitig gestaltet sich seine Nutzung.
    Ein Bericht von Jan Oliver Löfken

    1. Strom-Boje Mittelrhein Schwimmende Kraftwerke liefern Strom aus dem Rhein
    2. Speicherung von Überschussstrom Wasserstoff soll bei Engpässen helfen
    3. Energiewende DLR-Forscher bauen Kohlekraftwerke zu Stromspeichern um

    Super Mario Maker 2 & Co.: Vom Spieler zum Gamedesigner
    Super Mario Maker 2 & Co.
    Vom Spieler zum Gamedesigner

    Dreams, Overwatch Workshop und Super Mario Maker 2: Editoren für Computerspiele werden immer mächtiger, inzwischen können auch Einsteiger komplexe Welten bauen. Ein Überblick.
    Von Achim Fehrenbach

    1. Nintendo Switch Wenn die Analogsticks wandern
    2. Nintendo Akku von überarbeiteter Switch schafft bis zu 9 Stunden
    3. Hybridkonsole Nintendo überarbeitet offenbar Komponenten der Switch

      •  /