Klassen definieren
Teil des Abschnitts Objektorientierte Programmierung der Kotlin-Journey von Coddy. Lektion 2 von 57.
Eine Klasse beschreibt eine Art von Objekt: die Daten, die es enthält, und was es tun kann. class Dog { ... } deklariert den Typ, und Dog() erstellt ein Objekt dieses Typs, eine Instanz. Kotlin hat kein new-Schlüsselwort:
class Dog {
var name = "Rex"
var age = 3
}Innerhalb von main:
val dog = Dog()
println(dog.name)
println(dog.age)Ausgabe:
Rex
3Die Variablen innerhalb einer Klasse sind ihre Eigenschaften. Jede Instanz hat eine eigene Kopie, auf die mit einem Punkt zugegriffen wird und die damit geändert wird:
class Dog {
var name = "Rex"
}Innerhalb von main:
val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)Ausgabe:
Rex
BellaEine Funktion innerhalb einer Klasse ist eine Methode (in Kotlin werden sie Member-Funktionen genannt). Eine Methode kann die Eigenschaften der Instanz, für die sie aufgerufen wird, lesen und ändern:
class Counter {
var count = 0
fun increment() {
count++
}
fun report() = "count is $count"
}Innerhalb von main:
val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())Ausgabe:
count is 2Klassennamen verwenden UpperCamelCase (BankAccount); Eigenschaften und Methoden verwenden lowerCamelCase (balance, deposit()). Die Gruppierung der Daten mit den Funktionen, die auf ihnen arbeiten, ist die zentrale Idee der objektorientierten Programmierung: Code, der einen Counter verwendet, ruft increment() auf und muss niemals wissen, wie die Zählung gespeichert wird.
class BankAccount {
var balance = 0
fun deposit(amount: Int) {
balance += amount
}
}Aufgabe
EinfachVervollständige die Methode describe() der Klasse Pet. Sie gibt einen Satz zurück, der aus den Eigenschaften gebildet wird: Ein Haustier namens Rex der Spezies dog und mit dem Alter 3 ergibt Rex is a 3 year old dog.
Der bereitgestellte Code erstellt ein Pet, setzt seine Eigenschaften aus der Eingabe (Name, Spezies, Alter) und gibt das Ergebnis von describe() aus.
Dein Code gehört in Pet.kt. Main.kt enthält den bereitgestellten Eingabe-/Ausgabecode und kann nicht bearbeitet werden.
Probier es selbst
fun main() {
// Gelieferter Ein-/Ausgabecode: belasse ihn wie er ist
val input = generateSequence(::readLine).toList()
val pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = input[2].toInt()
println(pet.describe())
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenPrimärkonstruktoreninit-Blöcke und ValidierungSekundärkonstruktorenRückblick – Bibliotheksausweis4Vererbung
Offene Klassen und UnterklassenÜberschreiben von Membernsuper und KonstruktorenAbstrakte KlassenRückblick – Mitarbeiterverzeichnis2Eigenschaften und Kapselung
Benutzerdefinierte ZugriffsmethodenSichtbarkeitsmodifikatorenPrivate Setterlazy und lateinitWiederholung – Bankkonto5Schnittstellen
Schnittstellen deklarierenStandardmethodenMehrere SchnittstellenSchnittstellen als TypenRückblick – Zahlungsmethoden8Generics
Generische FunktionenGenerische KlassenTypbeschränkungenVarianz mit in und outRückblick – Prioritätswarteschlange11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihenÜbe selbstständig: Kotlin-Playground