• IT-Karriere:
  • 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. WEINMANN Emergency Medical Technology GmbH & Co. KG, Hamburg
  2. Vodafone GmbH, Düsseldorf

  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}

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Generische Programmierung und VererbungNebenläufigkeit und kein null 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8.  


Anzeige
Mobile-Angebote
  1. 328€ (mit Rabattcode "YDENUEDR6CZQWFQM" - Bestpreis!)
  2. 749€ (mit Rabattcode "PERFECTEBAY10" - Bestpreis!)
  3. 274,49€ (mit Rabattcode "PFIFFIGER" - Bestpreis!)
  4. 304€ (Bestpreis!)

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
       


5G: Nokias und Ericssons enge Bindungen zu Chinas Führung
5G
Nokias und Ericssons enge Bindungen zu Chinas Führung

Nokia und Ericsson betreiben viel Forschung und Entwicklung zu 5G in China. Ein enger Partner Ericssons liefert an das chinesische Militär.
Eine Recherche von Achim Sawall

  1. Quartalsbericht Ericsson mit Topergebnis durch 5G in China
  2. Cradlepoint Ericsson gibt 1,1 Milliarden Dollar für Routerhersteller aus
  3. Neben Huawei Telekom wählt Ericsson als zweiten 5G-Ausrüster

Ausprobiert: Meine erste Strafgebühr bei Free Now
Ausprobiert
Meine erste Strafgebühr bei Free Now

Storniert habe ich bei Free Now noch nie. Doch diesmal wurde meine Geduld hart auf die Probe gestellt.
Ein Praxistest von Achim Sawall

  1. Gesetzentwurf Weitergabepflicht für Mobilitätsdaten geplant
  2. Personenbeförderung Taxibranche und Uber kritisieren Reformpläne

Vivo X51 im Test: Vivos gelungener Deutschland-Start hat eine Gimbal-Kamera
Vivo X51 im Test
Vivos gelungener Deutschland-Start hat eine Gimbal-Kamera

Das Vivo X51 hat eine gute Kamera mit starker Bildstabilisierung und eine vorbildlich zurückhaltende Android-Oberfläche. Der Startpreis in Deutschland könnte aber eine Herausforderung für den Hersteller sein.
Ein Test von Tobias Költzsch

  1. Software-Entwicklung Google veröffentlicht Android Studio 4.1
  2. Jetpack Compose Android bekommt neues UI-Framework
  3. Google Android bekommt lokale Sharing-Funktion

    •  /