Interface, kelime anlamında da anlaşılacağı üzere “arayüz” demektir. Peki, nedir bu Interface? Kotlin programlama dilinde Interface kavramını abstract classların bir üst modeli olarak düşünebiliriz. Aslında Interfacelerin şuana kadar abstract classlardan bir farkı yok. 

interface Vehicle
{
    fun engine()
    
    fun trailer()
    {
        println("it does not have trailer.")
    }
    
}

class Bus : Vehicle
{
    override fun engine()
    {
        println("Bus has EURO6 engine")
    }
    
    }

class Truck : Vehicle
{
    override fun engine()
    {
        println("Truck has EURO5 engine")
    }
    
    override fun trailer()
    {
        println("it has trailer")
    }
}

fun main(args: Array<String>)
{
    var bus:Bus = Bus()
    bus.engine()
    bus.trailer()
    
    println()
    
    var truck:Truck = Truck()
    truck.engine()
    truck.trailer()
}


Örnekte görüldüğü gibi şauana kadar yapılan işlemlerin abstract classlardan bi’ farkı yok.

• Interfaceler, sınıf değillerdir

• Interface içerisinde soyut (gövdesiz) olarak tanımlanan metotlar, bu interfacelerden miras alınan sınıflara da yazılmalıdır. Aksi, halde derleyici hata verip uyaracaktır.

• Interfacelerden nesne üretilemez.

• Interfaceler içerisinde tanımlanan metotlar abstract ve publictir. Dolayısıyla, private ve final olarak tanımlanamazlar.

Kotlin, bazı diğer programlama dilleri gibi çoklu kalıtımı desteklemez. Ancak, biz bunu interfaceler yardımıyla gerçekleştirebiliriz. Abstract classtan farkını bir sonraki konularda değineceğim.