Objekt vs. Klasse in Kotlin
- Erstellen Sie Singleton-Objekte in Kotlin
- Erstellen Sie Objekte mit einer Klasse in Kotlin
- Erstellen Sie ein Begleitobjekt in Kotlin
- Erstellen Sie eine Datenklasse in Kotlin
- Abschluss
Die Merkmale Klasse
und Objekt
werden normalerweise in der objektorientierten Programmierung verwendet, die als OOP bezeichnet wird.
Objektorientierte Programmierung ist der Programmieransatz, bei dem Vererbung, Polymorphismus, Abstraktion und Kapselung die vier Grundprinzipien der objektorientierten Programmierung sind.
Beispiele für Sprachen, die objektorientierte Programmierung unterstützen, sind Kotlin, Java, Python, JavaScript, TypeScript und viele andere.
Der Hauptvorteil von Klassen besteht darin, dass sie uns dabei helfen, reale Wortdinge und -objekte zu simulieren und so viele unterschiedliche Situationen zu schaffen, die sich unterschiedlich verhalten und unterschiedliche Zustände haben.
Beispielsweise möchten Sie möglicherweise eine Anwendung erstellen, die Ihnen beim Entwerfen von Autos hilft. Wir wissen, dass es verschiedene Arten von Autos gibt, und sie haben unterschiedliche Zustände wie Farbe, Anzahl der Sitze und andere.
Um dies zu erreichen, verwenden wir eine Klasse, um einen Autoprototyp zu erstellen, und aus diesem Prototyp können wir Autos erstellen, die sich von den anderen in unterschiedlichen Zuständen befinden. In diesem Tutorial lernen wir, wie man Klassen und Objekte in Kotlin verwendet.
Erstellen Sie Singleton-Objekte in Kotlin
Es gibt verschiedene Möglichkeiten, Objekte in Kotlin zu erstellen, die in verschiedenen Formen existieren können. In diesem Beispiel lernen wir, wie man ein statisches Objekt erstellt.
Öffnen Sie die IntelliJ-Entwicklungsumgebung und wählen Sie Datei
> Neu
> Projekt
. Geben Sie im sich öffnenden Fenster den Projekt-Namen
als kotlin-objects-and-classes
ein, wählen Sie Kotlin
im Abschnitt Language
und IntelliJ
im Abschnitt Build system
.
Erstellen Sie eine Main.kt
-Datei im Ordner kotlin
und kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein.
object DBConnection{
private const val url = "http://localhost";
private const val port = 8080;
private const val DBName = "customerDB";
override fun toString(): String {
return "Connected to database $DBName using port $port at $url";
}
}
fun main(){
println(DBConnection.toString());
}
In diesem Beispiel haben wir eine statische Instanz einer Klasse erstellt, obwohl wir keine Klasse definiert haben, aber wenn wir diesen Code in Java dekompilieren, werden wir feststellen, dass eine Klasse hinter den Kulissen erstellt und ein Singleton zurückgegeben wird.
Wenn wir dieses Objekt als statische Klasseninstanz definieren, beziehen wir uns auf ein Singleton, was bedeutet, dass nur eine Kopie des Objekts während der Lebensdauer der Anwendung erstellt wird.
Beachten Sie, dass Sie Mitgliedsfunktionen und Variablen dieses Objekts aufrufen können, ohne es aufzurufen, wie in der Funktion main()
gezeigt.
Wir müssen nur das .
anhängen. Symbol auf dem Objektnamen zum Aufrufen und Ausführen eines beliebigen Aufrufs, wie wir es mit der Methode toString()
getan haben. Führen Sie das obige Beispiel aus und beachten Sie, dass es wie erwartet funktioniert.
Connected to database customerDB using port 8080 at http://localhost
Erstellen Sie Objekte mit einer Klasse in Kotlin
Wir haben erwähnt, dass uns eine Klasse hilft, reale Dinge und ihr Verhalten zu simulieren, wodurch eine Blaupause für diese Dinge erstellt wird.
Die Instanzen sind die verschiedenen Objekte, die aus der Blaupause erstellt wurden, und das folgende Beispiel zeigt, wie eine Klasse und eine Instanz der Klasse erstellt werden.
Kommentieren Sie das vorherige Beispiel aus und kopieren Sie den folgenden Code und fügen Sie ihn danach in die Datei Main.kt
ein.
class Employee(private val firstName: String,
private val lastName: String,
private val salary: Number){
override fun toString(): String {
return "$firstName $lastName earns a salary of $$salary"
}
}
fun main(){
val john = Employee("john","doe",60000);
println(john.toString());
}
In diesem Beispiel haben wir den Bauplan eines Mitarbeiters mit dem Schlüsselwort class
erstellt, und dies ist die Syntax, die immer verwendet wird, wenn Sie eine Klasse erstellen möchten.
Die Klasse hat drei Eigenschaften, firstName
, lastName
und salary
, und eine Methode, toString()
, die die Details des Mitarbeiters zurückgibt.
In der Methode main
haben wir durch den Aufruf des Klassennamens Employee()
, auch Konstruktor genannt, ein Objekt eines Mitarbeiters erzeugt und die konkreten Eigenschaften des Kunden übergeben.
Wir können beliebig viele Instanzen erstellen, indem wir den Konstruktor erneut aufrufen und verschiedene Eigenschaften übergeben, um verschiedene Objekte zu erstellen. Führen Sie dieses Beispiel aus, um zu überprüfen, ob es wie erwartet funktioniert.
john doe earns a salary of $60000
Erstellen Sie ein Begleitobjekt in Kotlin
Im ersten Beispiel haben wir gesehen, wie man ein statisches Objekt erstellt, das in seiner gesamten Lebensdauer nur eine Kopie hat und keiner Klasse angehört.
In statischen innerhalb einer Klasse können wir statische Eigenschaften und Funktionen erstellen, die zu einer Klasse gehören, indem wir ein Begleitobjekt verwenden. Das folgende Beispiel zeigt, wie dies realisiert werden kann.
Kommentieren Sie das vorherige Beispiel aus und kopieren Sie den folgenden Code und fügen Sie ihn danach in die Datei Main.kt
ein.
class Customer(private val name: String,
private val email: String,
private val orderItem: String){
companion object{
const val creditCard = 1
}
override fun toString(): String {
return "$name bought a $orderItem using the email $email";
}
fun getName(): String{
return this.name;
}
}
fun main(){
val customer = Customer("mary", "mary@gmail.com", "watch")
println(customer.getName()+" has "+ Customer.creditCard+ " credit card")
println(customer.toString())
}
Beachten Sie, dass die statischen Eigenschaften und Funktionen im Companion-Objekt definiert sind und das Companion-Objekt in der Klasse definiert ist.
Wenn Sie auf die statischen Eigenschaften und Funktionen zugreifen möchten, verwenden wir denselben Ansatz wie im ersten Beispiel.
Beispielsweise wird mit Customer.creditCard
auf die statische Eigenschaft creditCard
der Klasse zugegriffen. Führen Sie dieses Beispiel aus, um zu überprüfen, ob es wie erwartet funktioniert.
mary has 1 credit card
mary bought a watch using the email mary@gmail.com
Erstellen Sie eine Datenklasse in Kotlin
Kommentieren Sie das vorherige Beispiel aus und kopieren Sie den folgenden Code und fügen Sie ihn danach in die Datei Main.kt
ein.
import java.math.BigDecimal
data class Product(val productName: String,
val productPrice: BigDecimal);
fun main(){
val product = Product("watch", BigDecimal("457.65"))
println(product.toString());
}
Eine Datenklasse wird zum Speichern von Daten verwendet und mit dem Schlüsselwort data
erstellt, das vor dem Schlüsselwort class
hinzugefügt wird.
Es gibt Bedingungen für die Erstellung der Datenklasse und beinhalten die Sicherstellung, dass der primäre Konstruktor mindestens einen Parameter hat, dass die Parameter mit val
oder var
deklariert werden und dass die Datenklasse nicht offen
, versiegelt
, abstrakt
oder innen
.
Die Datenklasse hilft Entwicklern, Textbausteine in ihrem Code zu vermeiden, da sie allgemeine Funktionen generiert, die mit Klassen wie toString()
, equal()
, hashCode()
und anderen verwendet werden.
In diesem Beispiel haben wir eine Datenklasse für ein Produkt erstellt, und wenn wir die Methode toString()
aufrufen, werden die Kundendaten kostenlos an uns zurückgesendet. Führen Sie dieses Beispiel aus, um sicherzustellen, dass es wie erwartet funktioniert.
Product(productName=watch, productPrice=457.65)
Abschluss
In diesem Tutorial haben wir gelernt, wie man verschiedene Objekttypen in Kotlin und Objekte aus Klassen erstellt. Zu den behandelten Themen gehören das Erstellen eines Singleton-Objekts, das Erstellen von Objekten mithilfe einer Klasse, das Erstellen eines Begleitobjekts und das Erstellen einer Datenklasse.
Wenn Sie mehr über Objekte und Klassen erfahren möchten, besuchen Sie die Kotlin-Dokumentation, die die Konzepte im Detail behandelt.
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub