Kotlin Interface ile Çoklu Kalıtım
Daha önceden Kotlin’de Interface ve kullanımını vermiştim. Buraya tıklayarak ulaşabilirsiniz. Ayrıca, daha önceden Kotlin programlama dilinin çoklu kalıtımı (multi polymorphism) desteklemediğini de belirtmiştim. Peki, nedir bu çoklu kalıtım? Örneğin benim bir arabam var arabamın motoru hem benzin hem de elektrikli olsun. Şimdi bunu programlamaya dökelim. Şimdi benim bir tane benzin bir tane de elektrik sınıfım olsun. Bir tane de motor sınıfım. Bu motor sınıfı hem elektrik hem de benzinden miras alsın. İşte bu olaya “çoklu kalıtım” diyoruz. Ancak, Kotlin programlama dili bunu desteklemediği için çoklu kalıtımı sınıflar aracılığı ile yapamıyoruz. Miras aldığımız sınıfları interface olarak tanımlamamız gerekmektedir.
open class electric
{
}
open class benzin
{
}
class car : electric(), benzin()
{
}
Miras alma işlemimizi yukarıdaki gibi gerçekleştirdiğimizde derleyici hata verecektir. Aynı işlemi Interface ile yapalım.
interface electric
{
}
interface benzin
{
}
class car : electric, benzin
{
}
Görüldüğü üzere sorunsuz bir şekilde miras alabildik.
interface electric
{
fun isElectric() : String
{
return "Electric"
}
}
interface benzin
{
fun isBenzin() : String
{
return "Benzin"
}
}
class car1 : electric
{
var carType = "the car is " + isElectric()
}
class car2 : benzin
{
var carType = "the car is " + isBenzin()
}
class car3 : electric, benzin
{
var carType = "the car is " + isBenzin() + " and " + isElectric()
}
fun main(args : Array<String>)
{
var c1 : car1 = car1()
var c2 : car2 = car2()
var c3 : car3 = car3()
println(c1.carType)
println(c2.carType)
println(c3.carType)
}
Bir araba elektrikli, benzinli ya da hem elektrikli hem benzinli olabilir. İşte bu durumda sınıfımı hem benzinli hem de elektrikli sınıfından miras almam gerekliydi. Bunu interface yardımıyla gerçekleştirdik.