Kotlin: Abstrakte Klassen
Willemers Informatik-Ecke
  • Vererbung
  • Kotlin

  • Abstrakte Klassen sind Basisklassen, die Methoden definieren, diese aber nicht implementieren. Das soll dann eine erweiternde Klasse tun. Entsprechend können von abstrakten Klassen keine Objekte angelegt werden und es muss möglich sein, abstrakte Klassen zu erweitern.

    Eine abstrakte Klasse, die überhaupt keinen eigenen Code enthält, sondern nur abstrakte Methoden, nennt man Interface und wird häufig eingesetzt, um die Schnittstelle zwischen zwei Programmteilen zu definieren.

    Im folgenden Beispiel wird ein Interface für Artikel definiert. Es deklariert die Methoden kostet und getBezeichner.

    Die abstrakte Klasse Lebensmittel speichert den Bezeichner, weiß aber noch nicht, was das Lebensmittel kostet.

    Erst die Klasse Gurke kann einen konkreten Preis liefern, die es über den Konstruktorparameter erfährt.

    interface Artikel {
        abstract fun kostet() : Double
        abstract fun getBezeichner() : String
    }
    
    abstract class Lebensmittel (_bez:String) : Artikel {
        var name = _bez
        override fun getBezeichner() : String {
            return name
        }
    }
    
    class Gurke : Lebensmittel {
        var preis : Double
        override fun kostet() : Double {
            return preis
        }
        constructor (_preis:Double) : super("Gurke") {
            preis = _preis
        }
    }
    fun main() {
        var gurke = Gurke(1.25)
        println(gurke.kostet())
        println(gurke.getBezeichner())
    }