Dies ist eine kleine Einführung in Klassen und Funktionen in Kotlin. Diese Einführung ist nicht für Programmierneulinge gedacht. Ich setzte hier einiges an grundlegendem Wissen voraus. Wenn du also bereits Java (oder eine andere OOP-Sprache) programmierst, ist diese kleine Zusammenfassung für dich gerade richtig. Natürlich ist diese Einführung auch nicht vollständig. Allerdings sollte es reichen um mal mit Kotlin herumzuspielen.
Deklarieren einer Klasse in Kotlin
Zum deklarieren einer Klasse Schlüsselwort class.
class Person { }
Kotlin Klasse Konstruktor
Primär Konstruktor
Klassen haben einen primär default Konstruktor und ein oder mehrere sekundär Konstruktor. Der Primärkonstruktor ist teil des Headers. Für Java-Programmierer sollte vor allem die Reihenfolge Typ und Name des Parameters ungewohnt sein.
class Person constructor(name: String, surname: String)
Wenn der Primärkonstruktor nichts weiter macht, kann man das construktor-Schlüsselwort auch weg lassen.
class Person(name: String, surname: String)
Es sind keine geschwungenen Klammern nötig, wenn die Klasse keinen weiteren Inhalt hat.
Anweisungen für den Primärkonstruktor müssen im init-Block stehen.
class Person(name: String, surname: String){ init { ... } }
Im Body der Klassen können variablen aus dem Primärkonstruktor verwendet werden.
class Person(name: String){ val surname = name.toUpperCase() }
Will man Properties angeben und die gleich mit dem Primärkonstruktor initalisieren muss man das Schlüsselwort val (read-only) or var (mutable) angeben.
class Person(val firstName: String, val lastName: String) { // ... }
Sekundär Konstruktoren
Sekundär Konstruktoren müssen das Schlüsselwort constructor haben.
class Person { constructor(parent: Person) { parent.children.add(this) } }
Jeder Sekundärkonstruktor muss auf einen Primärkonstruktor verweisen.
Instanz einer Kotlin Klasse erzeugen
val rechnung = Invoice() val person = Person("Max Mustermann")
Vererbung bei Kotlin Klassen
Standardmäßig erweitert eine Klasse immer die Superklasse Any.
Um explizit eine Klasse anzugeben, die erweitert werden soll, wird diese nach einem Doppelpunkt angegeben.
open class Haustier(name: String) class Katze(name: String) : Haustier(name)
Standardmäßig sind Kotlin Klassen closed, was dem Java final entspricht. Damit eine Klasse erweitert werden kann muss sie explizit als open definiert werden.
Wenn die Klasse keine Primärkonstruktor hat, muss jeder Sekundärkonstruktor die erweiterte Klasse initialisieren. Ähnlich dem Java super.
class MyView : View { constructor(ctx: Context) : super(ctx) constructor(ctx: Context, attrs: AtributeSet) : super (ctx, attrs) }
Funktionen in Kotlin
Methoden in Java werden in Kotlin zu Funktionen. Das Schlüsselwort fun definitiert eine Funktion.
Eine Funktion in Kotlin gibt immer einen return value zurück. Wenn man keinen Rückgabe wert definiert wird Unit zurückgegeben. Dementsprechend ist Unit mit void in Java vergleichbar.
fun double(x: Int): Int { return 2*x }
Auch einzeilige Funktionen sind möglich. Dann können die geschweiften Klammern entfallen.
fun double (x: Int) : Int 2*x
Sehr praktisch ist auch, dass Parameter eine Funktion optional sein können. Wenn also de entsprechende Parameter nicht übergeben wird, dann wird der Standardwert verwendet.
fun warnung(nachricht: String, priority: Int = 5) { ... }
warnung("Wichtige Nachricht") warnung ("Unwichtige Nachricht", 2)
Named Arguments können auch in beliebiger Reihenfolge angesprochen werden.
warnung(priority = 1, nachricht = "Ganz unwichtige Nachricht")
Praktische Tools zum Testen von Kotlin Klassen
In Android Studio Tools -> Kotlin -> Kotlin REPL
Nützliche Links für Kotlin
Dies hier ist natürlich nur ein kleiner Einblick in Kotlin. Eine vollständige Referenz findest du hier:
Schreibe einen Kommentar