CodeBlanks Logo Icon CodeBlanks

interface

interface ile arayüz uygulama öğrenirsin.

interface

Bir interface, uygulayan sınıfların dolduracağı bir sözleşme tanımlar. Kotlin'de arayüzler hem gövdesiz metotlar hem de gövdeli varsayılan metotlar içerebilir; ancak durum (state) tutamazlar.

Örnek: interface Drawable { fun draw(): String }. Bu arayüzü uygulayan sınıflar fun draw(): String'i override etmek zorundadır. Bir sınıf birden çok arayüz uygulayabilir: class Foo : A, B. Arayüzler constructor parametresi almaz; bu yönüyle abstract sınıflardan ayrılırlar.

Arayüz uygulama

Bir sınıf, arayüzü : ile uygular. Arayüzün gövdesiz metotlarını override ile doldurmak zorundadır. Birden fazla arayüz virgülle listelenir.

Örnek: class Circle(val radius: Double) : Drawable { override fun draw() = "çember" }. Burada Circle hem Drawable arayüzünü uygular hem de kendi radius özelliğini taşır. Arayüz uygularken constructor çağrısı yapılmaz (parantez yok); yalnızca arayüz adı yazılır. Bu, sınıf mirasından farklı bir yaklaşımdır.

Uygulama Drawable arayüzü ve Circle sınıfı

Drawable adında bir arayüz tanımla; içinde fun draw(): String metodu olsun. Circle adında bir sınıf tanımla; primary constructor val radius: Double alsın ve Drawable arayüzünü uygulasın. override fun draw(): String metodu "Çember çizildi: yarıçap $radius" döndürsün. main içinde Circle(3.0) örneği oluştur ve draw()'ın sonucunu yazdır.

Başlangıç kodu

Main.kt
// Drawable arayüzü
// draw metodu imzası
// Circle sınıfı, Drawable uygular
// override ile yarıçap metni döndür
// main'de Circle örnekle, draw yazdır

Örnek çözüm

Main.kt
interface Drawable {
    fun draw(): String
}

class Circle(val radius: Double) : Drawable {
    override fun draw(): String {
        return "Çember çizildi: yarıçap $radius"
    }
}

fun main() {
    val c = Circle(3.0)
    println(c.draw())
}

Beklenen çıktı

Çember çizildi: yarıçap 3.0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir Kotlin arayüzü aşağıdakilerden hangisini içeremez?

  • Gövdesiz metot
  • Gövdeli varsayılan metot
  • Soyut metot imzası
  • Örnek alanı (state) Doğru cevap

Açıklama: Arayüzler durum tutamaz; yalnızca davranış tanımlar.

2 Arayüz kavramlarını eşle

Kavram Anlamı
interface Drawable Sözleşme tanımı
fun draw(): String Gövdesiz metot
: Drawable Uygulama bağlacı
override fun draw() Sınıfta doldurma

3 Arayüz uygulamasını tamamla

Soru
class Circle(val radius: Double) : ____ {
    override fun draw() = "çember"
}
Cevap
class Circle(val radius: Double) : Drawable {
    override fun draw() = "çember"
}

Açıklama: Arayüz adı : sonrası yazılır, constructor çağrısı yapılmaz.

Orta seviye bölümündeki tüm dersler