Generische Programmierung und Vererbung

Bei Listen und ähnlichen Containerklassen steht bei der Erstellung noch nicht fest, welche Objekte sie speichern sollen. In diesen Fällen kann der Entwickler einfach für den Typ einen Platzhalter hinterlegen, in folgendem Beispiel das T:

Stellenmarkt
  1. IT-Trainee (m/w/d)
    Personalamt der Freien und Hansestadt Hamburg, Hamburg
  2. Director Application Management (m/w/d)
    über QRC Group AG, Raum Marburg, Limburg, Wetzlar, Gießen (Home-Office)
Detailsuche

  1. class Cache<T>(wert: T) {
  2. var inhalt = wert
  3. }
  4. val zahlencache: Cache<Int> = Cache<Int>(35)

Die letzte Zeile erstellt ein Cache-Objekt, das Zahlen speichert. Sofern der Typ eindeutig ist, kann man die Kurzschreibweise val zahlencache = Cache(35) verwenden. Genau wie Java bezeichnet Kotlin dieses Konzept als Generics, unterstützt aber nicht die dort möglichen Wildcards.

Explizite Erbfolge

Eine Klasse kann nur dann von einer Kollegin erben, wenn man Letztere explizit mit open kennzeichnet. Wie an vielen anderen Stellen auch, folgen die Kotlin-Macher damit den Designvorschlägen des Buchs Effective Java:

Golem Akademie
  1. ITIL 4® Foundation: virtueller Zwei-Tage-Workshop
    7.–8. Februar 2022, virtuell
  2. Elastic Stack Fundamentals – Elasticsearch, Logstash, Kibana, Beats: virtueller Drei-Tage-Workshop
    15.–17. März 2022, Virtuell
Weitere IT-Trainings

  1. open class Punkt(var x: Int, var y: Int)
  2. class Quadrat(x: Int, y: Int, var w: Int) : Punkt (x,y)

Analog lässt sich eine Funktion nur dann überschreiben, wenn man ihr das Schlüsselwort open voranstellt und die überschreibende Funktion explizit mit override kennzeichnet. Durch das Schlüsselwort final lässt sich eine Funktion in weiteren Unterklassen nicht mehr überschreiben:

  1. open class Punkt {
  2. open fun zeichne() {}
  3. }
  4. class Kreis() : Punkt() {
  5. final override fun zeichne() {}
  6. }

Mehrfachvererbung

Kotlin erlaubt auch Mehrfachvererbung, im Gegenzug fehlen statische Methoden. Eine Klasse lässt sich allerdings jederzeit um weitere Properties und Funktionen ergänzen (Extensions). In folgendem Beispiel erhält Quadrat nachträglich eine Methode verschieben() und ein Property farbe:

  1. fun Quadrat.verschieben(a: Int, b: Int) {
  2. this.x=this.x+a
  3. this.y=this.y+b
  4. }
  5. val Quadrat.farbe: String
  6. get() = this.toUpperCase()
  7.  
  8. val q = Quadrat(1,2,3)
  9. q.verschieben(4,5)

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Klassen mit zwei Konstruktoren und PropertiesSchnittstellen sind auch nur Klassen 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8.  


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...



Aktuell auf der Startseite von Golem.de
Framework Laptop im Hardware-Test
Schrauber aller Länder, vereinigt euch!

Der modulare Framework Laptop ist ein wahrgewordener Basteltraum. Und unsere Begeisterung für das, was damit alles möglich ist, lässt sich nur schwer bändigen.
Ein Test von Oliver Nickel und Sebastian Grüner

Framework Laptop im Hardware-Test: Schrauber aller Länder, vereinigt euch!
Artikel
  1. Let's Encrypt: Was Admins heute tun müssen
    Let's Encrypt
    Was Admins heute tun müssen

    Heute um 17 Uhr werden bei Let's Encrypt Zertifikate zurückgezogen. Wir beschreiben, wie Admins prüfen können, ob sie betroffen sind.
    Eine Anleitung von Hanno Böck

  2. Framework Laptop im Test: Das wird unser nächstes reparierbares Arbeits-Notebook
    Framework Laptop im Test
    Das wird unser nächstes reparierbares Arbeits-Notebook

    Der Framework Laptop ist wirklich besonders: Komponenten lassen sich einfach auseinanderbauen. Ein schickes Notebook ist es obendrein.
    Ein Test von Oliver Nickel und Sebastian Grüner

  3. Hauptuntersuchung: Tesla Model S beim TÜV nur knapp vor Verbrennern von Dacia
    Hauptuntersuchung
    Tesla Model S beim TÜV nur knapp vor Verbrennern von Dacia

    Bei den TÜV-Prüfungen schneidet das Model S nicht viel besser ab als sehr günstige Verbrenner. Andere E-Autos sind da besser.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • RTX 3080 12GB 1.499€ • iPhone 13 Pro 512GB 1.349€ • DXRacer Gaming-Stuhl 159€ • LG OLED 55 Zoll 1.149€ • PS5 Digital mit o2-Vertrag bestellbar • Prime-Filme für je 0,99€ leihen • One Plus Nord 2 335€ • Intel i7 3,6Ghz 399€ • Alternate: u.a. Sennheiser Gaming-Headset 169,90€ [Werbung]
    •  /