Abo
  • Services:
Anzeige
Kotlin ist ein Leuchtturmprojekt für die Android-Entwicklung.
Kotlin ist ein Leuchtturmprojekt für die Android-Entwicklung. (Bild: Jetbrains/Apache License 2.0)

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:

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

Anzeige

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:

  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)

 Klassen mit zwei Konstruktoren und PropertiesSchnittstellen sind auch nur Klassen 

eye home zur Startseite
Proctrap 29. Okt 2017

immer diese Threadschändung

Themenstart

MiBx 18. Okt 2017

Das ist schon ganz gut so, dass Du zurück gewechselt bist, wenn Du Dich nicht wirklich...

Themenstart

horotab 05. Okt 2017

Wer Methoden schreibt, die so lang sind, mach idR sowieso etwas falsch. Im Idealfall hat...

Themenstart

demonkoryu 04. Okt 2017

Closures sind nicht "hip" sondern eine nützliche Abstraktion, die in den letzten Jahren...

Themenstart

Kommentieren



Anzeige

Stellenmarkt
  1. Robert Bosch Start-up GmbH, Renningen
  2. Birkenstock GmbH & Co. KG Services, Neustadt (Wied)
  3. Technische Universität Hamburg, Hamburg
  4. über Hays AG, München


Anzeige
Top-Angebote
  1. 42,99€
  2. (heute u. a. Gran Turismo + Controller für 79€, ASUS ZenFone 4 Max für 199€ und Razer...
  3. 499€ inkl. Abzug (Preis wird im Warenkorb angezeigt)

Folgen Sie uns
       


  1. Staingate

    Austauschprogramm für fleckige Macbooks wird verlängert

  2. Digitale Infrastruktur

    Ralph Dommermuth kritisiert deutsche Netzpolitik

  3. Elektroauto

    VW will weitere Milliarden in Elektromobilität investieren

  4. Elektroauto

    Walmart will den Tesla-Truck

  5. Die Woche im Video

    Ausgefuchst, abgezockt und abgefahren

  6. Siri-Lautsprecher

    Apple versemmelt den Homepod-Start

  7. Open Routing

    Facebook gibt interne Plattform für Backbone-Routing frei

  8. Übernahme

    Vivendi lässt Ubisoft ein halbes Jahr in Ruhe

  9. Boston Dynamics

    Humanoider Roboter Atlas macht Salto rückwärts

  10. Projekthoster

    Github zeigt Sicherheitswarnungen für Projektabhängigkeiten



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Universal Paperclips: Mit ein paar Sexdezillionen Büroklammern die Welt erobern
Universal Paperclips
Mit ein paar Sexdezillionen Büroklammern die Welt erobern
  1. Disney Marvel Heroes wird geschlossen
  2. Starcraft 2 Blizzard lästert über Pay-to-Win in Star Wars Battlefront 2
  3. Free to Play World of Tanks bringt pro Nutzer und Monat 3,30 Dollar ein

Star Wars Battlefront 2 im Test: Filmreife Sternenkrieger
Star Wars Battlefront 2 im Test
Filmreife Sternenkrieger
  1. Star Wars EA entfernt Mikrotransaktionen aus Battlefront 2
  2. Electronic Arts Community empört über freischaltbare Helden in Battlefront 2
  3. Star Wars Mächtiger Zusatzinhalt für Battlefront 2 angekündigt

Coffee Lake vs. Ryzen: Was CPU-Multitasking mit Spielen macht
Coffee Lake vs. Ryzen
Was CPU-Multitasking mit Spielen macht
  1. Custom Foundry Intel will 10-nm-Smartphone-SoCs ab 2018 produzieren
  2. ARM-Prozessoren Macom verkauft Applied Micro
  3. Apple A11 Bionic KI-Hardware ist so groß wie mehrere CPU-Kerne

  1. Pro Gerät soll der Austausch maximal zweimal...

    rsaddey | 18:59

  2. LOL: Unternehmer, die nach dem Staat rufen

    Dungeon Master | 18:53

  3. Re: Die Akku Technik wird in den nächsten Jahren...

    Hegakalle | 18:52

  4. Re: Verbessert

    LinuxMcBook | 18:52

  5. Null Kommentare? Die Mobil-Unternehmen...

    jude | 18:51


  1. 17:14

  2. 13:36

  3. 12:22

  4. 10:48

  5. 09:02

  6. 19:05

  7. 17:08

  8. 16:30


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel