HOWTO · Kotlin

Erweitern Sie eine Klasse mit mehreren Konstruktoren in Kotlin

Dieses Tutorial zeigt das Erweitern einer Klasse mit mehreren Konstruktoren in Kotlin. Zu diesem Zweck verwenden wir sekundäre Konstruktoren.

Auf dieser Seite

Vererbung ist ein bedeutendes Konzept in der objektorientierten Programmierung, bei der eine abgeleitete Klasse alle Merkmale von ihrer Basis-/Oberklasse erbt und auch deren Merkmale haben kann.

In diesem Artikel wird erläutert, wie eine Klasse erweitert wird, die über mehrere Konstruktoren verfügt. Ein Konstruktor ist eine Funktion, die zum Zeitpunkt der Objekterstellung aufgerufen wird, um die Klassenvariablen zu initialisieren.

Erweitern Sie eine Klasse mit mehreren Konstruktoren in Kotlin

Normalerweise können wir nicht mehrere primäre Konstruktoren von der Superklasse erben und je nach Situation einen von ihnen aufrufen. Um dieses Problem zu lösen, können wir sekundäre Konstruktoren verwenden.

Obwohl sekundäre Konstruktoren in Kotlin nicht so häufig sind. Sie sind jedoch praktisch, wenn Sie mehrere Konstruktoren von der Oberklasse erben.

Sekundärkonstruktoren werden mit dem Schlüsselwort constructor definiert. Im folgenden Beispiel hat die Superklasse Fruit zwei sekundäre und keinen primären Konstruktor.

Wir haben eine abgeleitete Klasse Mango mit zwei sekundären Konstruktoren erstellt und je nach Kontext einen der Konstruktoren der Oberklasse aufgerufen. Auf diese Weise können wir mehrere Konstruktoren von der Basisklasse erben.

Beispielcode:

public open class Fruit{
    public constructor(message: String, color:String) {
        println("$message $color")
    }
    public constructor(message:String) {
        println("$message")
    }
}

public class Mango: Fruit{
    constructor(message:String, color:String):super(message, color) {
        
    }
    public constructor(message:String):super(message) {
        
    }
}

fun main(args : Array<String>) {
    Mango("I am a mango.")
    Mango("I am a mango", "Yellow One.")
}

Ausgang:

I am a mango.
I am a mango Yellow One.