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. Hays AG, Frankfurt am Main
  2. via experteer GmbH, verschiedene Standorte (Deutschland, Ungarn, Slowakei)

  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. (u. a. Logan, John Wick, Alien Covenant, Planet der Affen Survival)
  2. (u. a. 3 Blu-rays für 15€, 2 Neuheiten für 15€)

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
       


Red Dead Redemption 2 auf der Xbox One X - Golem.de live

Wir zeigen auf zahlreich geäußerten Wunsch Red Dead Redemption 2 im Livestream auf der Xbox One X. In der Aufzeichung kommen die Details des zum Teil in 4K hereingezoomten Bildausschnittes gut zur Geltung.

Red Dead Redemption 2 auf der Xbox One X - Golem.de live Video aufrufen
Apple Mac Mini (Late 2018) im Test: Tolles teures Teil - aber für wen?
Apple Mac Mini (Late 2018) im Test
Tolles teures Teil - aber für wen?

Der Mac Mini ist ein gutes Gerät, wenngleich der Preis für die Einstiegsvariante von Apple arg hoch angesetzt wurde und mehr Speicher(platz) viel Geld kostet. Für 4K-Videoschnitt eignet sich der Mac Mini nur selten und generell fragen wir uns, wer ihn kaufen soll.
Ein Test von Marc Sauter

  1. Apple Mac Mini wird grau und schnell
  2. Neue Produkte Apple will Mac Mini und Macbook Air neu auflegen

IT: Frauen, die programmieren und Bier trinken
IT
Frauen, die programmieren und Bier trinken

Fest angestellte Informatiker sind oft froh, nach Feierabend nicht schon wieder in ein Get-together zu müssen. Doch was ist, wenn man kein Team hat und sich selbst Programmieren beibringt? Women Who Code veranstaltet Programmierabende für Frauen, denen es so geht. Golem.de war dort.
Von Maja Hoock

  1. Software-Entwickler CDU will Online-Weiterbildung à la Netflix
  2. Job-Porträt Cyber-Detektiv "Ich musste als Ermittler über 1.000 Onanie-Videos schauen"
  3. Bundesagentur für Arbeit Ausbildungsplätze in der Informatik sind knapp

Autonome Schiffe: Und abends geht der Kapitän nach Hause
Autonome Schiffe
Und abends geht der Kapitän nach Hause

Weite Reisen in ferne Länder, eine Braut in jedem Hafen: Klischees über die Seefahrt täuschen darüber hinweg, dass diese ein Knochenjob ist. Doch in wenigen Jahren werden Schiffe ohne Besatzung fahren, überwacht von Steuerleuten, die nach dem Dienst zur Familie zurückkehren. Daran arbeitet etwa Rolls Royce.
Ein Bericht von Werner Pluta

  1. Elektromobilität San Francisco soll ein Brennstoffzellenschiff bekommen
  2. Yara Birkeland Autonome Schiffe sind eine neue Art von Transportsystem
  3. Power Pac Strom aus dem Container für Ozeanriesen

    •  /