Kotlin-Klasse und Objekte (mit Beispielen)

In diesem Artikel werden Sie in die objektorientierte Programmierung in Kotlin eingeführt. Sie lernen, was eine Klasse ist, wie Sie Objekte erstellen und in Ihrem Programm verwenden.

Kotlin unterstützt sowohl funktionale als auch objektorientierte Programmierung.

Kotlin unterstützt Funktionen wie Funktionen höherer Ordnung, Funktionstypen und Lambdas, was es zu einer großartigen Wahl für die Arbeit im funktionalen Programmierstil macht. Sie werden in späteren Kapiteln mehr über dieses Konzept erfahren. Dieser Artikel konzentriert sich auf den objektorientierten Programmierstil in Kotlin.

Objektorientierte Programmierung (OOP)

Im objektorientierten Programmierstil können Sie ein komplexes Problem durch Erstellen von Objekten in kleinere Mengen aufteilen.

Diese Objekte haben zwei Eigenschaften gemeinsam:

  • Zustand
  • Verhalten

Nehmen wir einige Beispiele:

  1. Lampe ist ein Objekt
    • Es kann ein- oder ausgeschaltet sein.
    • Sie können turn onund turn offLampe (Verhalten).
  2. Fahrrad ist ein Objekt
    • Es hat aktuelle Gang, zwei Räder, Anzahl der Zahnräder usw. Zustände.
    • Es hat Brems-, Beschleunigungs-, Gangwechsel- usw. Verhalten.

Im weiteren Verlauf erfahren Sie mehr über Detailmerkmale einer objektorientierten Programmierung wie Datenkapselung, Vererbung und Polymorphismus. Dieser Artikel konzentriert sich auf die Grundlagen, um die Dinge einfach zu halten.

Literaturempfehlung: Was ist ein Objekt?

Kotlin Klasse

Bevor Sie Objekte in Kotlin erstellen, müssen Sie eine Klasse definieren.

Eine Klasse ist eine Blaupause für das Objekt.

Wir können uns Klasse als Skizze (Prototyp) eines Hauses vorstellen. Es enthält alle Details zu den Böden, Türen, Fenstern usw. Basierend auf diesen Beschreibungen bauen wir das Haus. Haus ist das Objekt.

Da viele Häuser aus derselben Beschreibung erstellt werden können, können wir viele Objekte aus einer Klasse erstellen.

Wie definiere ich eine Klasse in Kotlin?

Um eine Klasse in Kotlin zu definieren, wird das classSchlüsselwort verwendet:

 Klasse ClassName (// Eigenschaft // Mitgliedsfunktion…) 

Hier ist ein Beispiel:

 Klassenlampe (// Eigenschaft (Datenelement) privat var isOn: Boolean = false // Elementfunktion fun turnOn () (isOn = true) // Elementfunktion fun turnOff () (isOn = false))

Hier haben wir eine Klasse namens Lamp definiert.

Die Klasse hat eine Eigenschaft isOn (definiert wie eine Variable) und zwei Elementfunktionen turnOn()und turnOff().

Empfohlene Lektüre: Kotlin-Funktionen

In Kotlin muss entweder die Eigenschaft initialisiert oder deklariert werden abstract( Besuchen Sie: Kotlin Abstract Class, um mehr zu erfahren). Im obigen Beispiel wird die Eigenschaft isOn mit initialisiert false.

Klassen, Objekte, Eigenschaften, Elementfunktionen usw. können Sichtbarkeitsmodifikatoren haben. Beispielsweise ist die Eigenschaft isOn privat. Dies bedeutet, dass die isOn-Eigenschaft nur innerhalb der Lamp-Klasse geändert werden kann.

Andere Sichtbarkeitsmodifikatoren sind:

  • private - nur innerhalb der Klasse sichtbar (zugänglich).
  • public - überall sichtbar.
  • protected - sichtbar für die Klasse und ihre Unterklasse.
  • internal - Jeder Client innerhalb des Moduls kann darauf zugreifen.

Sie werden darüber erfahren , protectedund internalModifikatoren später in Kotlin Sichtbarkeitsmodifizierer Artikel.

Wenn Sie den Sichtbarkeitsmodifikator nicht angeben, wird er publicstandardmäßig verwendet.

Im obigen Programm turnOn()und in den turnOff()Mitgliedsfunktionen ist die publicEigenschaft isOn privat.

Kotlin Objekte

Wenn eine Klasse definiert ist, wird nur die Spezifikation für das Objekt definiert. Es wird kein Speicher oder Speicher zugewiesen.

Um auf innerhalb der Klasse definierte Mitglieder zuzugreifen, müssen Sie Objekte erstellen. Lassen Sie uns Objekte der Lampenklasse erstellen.

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class )

Dieses Programm erstellt zwei Objekte l1 und l2 der Klasse Lamp. Die isOn-Eigenschaft für beide Lampen l1 und l2 ist false.

Wie greife ich auf Mitglieder zu?

Sie können mithilfe der .Notation auf Eigenschaften und Elementfunktionen einer Klasse zugreifen . Beispielsweise,

 l1.turnOn ()

Diese Anweisung ruft die Funktion turnOn () für das Objekt l1 auf.

Nehmen wir ein anderes Beispiel:

 l2.isOn = true

Here, we tried to assign true to isOn property of l2 object. Note that, isOn property is private, and if you try to access isOn from outside the class, an exception is thrown.

Example: Kotlin Class and Object

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus(lamp: String) ( if (isOn == true) println("$lamp lamp is on.") else println("$lamp lamp is off.") ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class l1.turnOn() l2.turnOff() l1.displayLightStatus("l1") l2.displayLightStatus("l2") )

When you run the program, the output will be:

 l1 Lamp is on. l2 Lamp is off.

In the above program,

  • Lamp class is created.
  • The class has a property isOn and three member functions turnOn(), turnOff() and displayLightStatus().
  • Two objects l1 and l2 of Lamp class are created in the main() function.
  • Here, turnOn() function is called using l1 object: l1.turnOn(). This method sets isOn instance variable of l1 object to true.
  • And, turnOff() function is called using l2 object: l1.turnOff(). This method sets isOff instance variable of l2 object to false.
  • Dann wird eine displayLightStatus()Funktion für l1- und l2-Objekte aufgerufen, die eine entsprechende Nachricht druckt, abhängig davon, ob die isOn-Eigenschaft wahr ist oder nicht false.

Beachten Sie, dass die isOn-Eigenschaft falseinnerhalb der Klasse initialisiert wird . Wenn ein Objekt der Klasse erstellt wird, wird die isOn-Eigenschaft für das Objekt falseautomatisch initialisiert . Daher muss das l2-Objekt nicht aufgerufen werden, turnOff()um die isOn-Eigenschaft auf zu setzen false.

Beispielsweise:

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus() ( if (isOn == true) println("lamp is on.") else println("lamp is off.") ) ) fun main(args: Array) ( val lamp = Lamp() lamp.displayLightStatus() ) 

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Lampe ist aus.

Dieser Artikel ist nur eine Einführung in die objektorientierte Programmierung in Kotlin. Überprüfen Sie diese Kapitel nacheinander, um mehr zu erfahren:

  • Kotlin Konstruktoren und Initialisierer
  • Kotlin dieses Schlüsselwort
  • Verschachtelte Kotlin-Klasse

Interessante Beiträge...