CodeBlanks Logo Icon CodeBlanks

override

override ile metot yeniden tanımlamayı öğrenirsin.

override

Üst sınıftaki open bir metodu alt sınıfta yeniden tanımlamak için override niteleyicisi kullanılır. Bu, alt sınıfa özgü davranış eklemenin standart yoludur.

Örnek: class Circle : Shape() { override fun area(): Double { return 3.14 * r * r } }. Burada area metodu Shape içinde open işaretliyse alt sınıfta override ile yeniden yazılır. override yazmazsan derleyici hata verir; çünkü Kotlin yanlışlıkla metot gizlemeyi önler. override edilen metotlar da varsayılan olarak açıktır.

open ve override bağı

Alt sınıfta bir metodu override ile yeniden tanımlayabilmek için üst sınıfta aynı metot open olmalıdır. open değilse override derlenmez.

Örnek: open class Shape { open fun area() = 0.0 }; alt sınıf override fun area() = ... yazabilir. Eğer Shape içinde area open değilse alt sınıfın override denemesi derleme hatası verir. final override yazarak alt sınıfın altında tekrar yeniden tanımlanmasını engelleyebilirsin.

Uygulama Shape üst sınıfı ve Circle alt sınıfı

Shape adında open bir sınıf tanımla; primary constructor val name: String alsın. İçinde open fun area(): Double = 0.0 metodu olsun. Circle adında bir alt sınıf tanımla; primary constructor name: String, val radius: Double alsın ve Shape(name) ile miras alsın. override fun area(): Double metodu 3.14 * radius * radius döndürsün. main içinde Circle("Daire", 2.0) örneği oluştur ve area()'yı yazdır.

Başlangıç kodu

Main.kt
// Shape üst sınıfı (open)
// alan metodu, varsayılan sıfır döner
// Circle alt sınıfı, name ve radius ile
// override ile alan hesapla
// main'de Circle örnekle, area yazdır

Örnek çözüm

Main.kt
open class Shape(val name: String) {
    open fun area(): Double = 0.0
}

class Circle(name: String, val radius: Double) : Shape(name) {
    override fun area(): Double {
        return 3.14 * radius * radius
    }
}

fun main() {
    val c = Circle("Daire", 2.0)
    println(c.area())
}

Beklenen çıktı

12.56

Soru ve cevaplar

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

1 override kalıbını eşle

Kavram Anlamı
open fun area() Üst sınıfta açılan metot
override fun area() Alt sınıfta yeniden tanım
: Shape() Miras ve constructor
return 3.14 * r * r Yeni gövde

2 Bir alt sınıf <code>override fun area()</code> yazıyor ama üst sınıfta <code>area</code> <code>open</code> değil. Ne olur?

  • Derleme hatası verilir Doğru cevap
  • Kod normal derlenir
  • Metot çalışma zamanında gizlenir
  • Üst sınıfın gövdesi çalışır

Açıklama: open olmayan metot override edilemez; derleme hatası verilir.

3 Override metodunu tamamla

Soru
class Circle : Shape() {
    ____ fun area(): Double {
        return 3.14 * r * r
    }
}
Cevap
class Circle : Shape() {
    override fun area(): Double {
        return 3.14 * r * r
    }
}

Açıklama: override, üst sınıfın open metodunu yeniden tanımlar.

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