interface
- Kotlin kursu
- Orta seviye
- Ders 11/116
- 5 dk
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
// 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
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
class Circle(val radius: Double) : ____ {
override fun draw() = "çember"
}
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.