Sobes.tech
Junior

Kotlin'de kalıtım nasıl çalışır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de kalıtım, açık sınıflar ilkesine dayanır. Varsayılan olarak, tüm sınıflar kapalıdır (final), ve bir sınıfın kalıtılabilir hale gelmesi için açıkça open anahtar kelimesi ile işaretlenmesi gerekir.

Ana noktalar:

  • Açık sınıflar: Temel sınıf open olarak işaretlenmelidir.
    open class Base {
        // ...
    }
    
  • Kalıtım: Kalıtım, iki nokta (:) kullanılarak yapılır, ardından temel sınıfın adı ve gerekirse yapıcı çağrısı gelir.
    class Derived : Base() {
        // ...
    }
    
  • Yöntem ve özelliklerin üzerine yazma: Temel sınıfın yöntem veya özelliklerini geçersiz kılmak için, bunlar temel sınıfta open ile işaretlenmiş olmalı ve türetilmiş sınıfta override anahtar kelimesi kullanılmalıdır.
    open class Base {
        open fun process() { /* ... */ }
        open val value: Int = 0
    }
    
    class Derived : Base() {
        override fun process() { /* ... */ }
        override val value: Int = 1
    }
    
    Eğer temel sınıfın yöntemi veya özelliği open olarak işaretlenmemişse, üzerine yazılamaz.
  • Temel sınıfın üyelerine erişim: Türetici sınıftan temel sınıfın üyelerine erişim, super anahtar kelimesi ile yapılır.
    class Derived : Base() {
        override fun process() {
            super.process() // Temel sınıfın yöntemini çağırır
            // ...
        }
    }
    
  • Yapıcılar: Eğer temel sınıfın parametreli bir yapıcısı varsa, türetilmiş sınıf bu yapıcıyı çağırmak zorundadır.
    open class Base(name: String) {
        // ...
    }
    
    class Derived(name: String, age: Int) : Base(name) {
        // ...
    }
    
  • Arayüzler: Bir sınıf birden fazla arayüzü uygulayabilir ve bunlar, varsa, kalıtılan sınıfın ardından virgül ile belirtilir. Arayüzler varsayılan olarak "açık" kabul edilir.
    interface MyInterface {
        fun doSomething()
    }
    
    class MyClass : Base(), MyInterface {
        override fun doSomething() { /* ... */ }
    }
    
  • Soyut sınıflar: Soyut sınıflar, kısmi bir uygulama tanımlamak için kullanılır ve soyut yöntemler ve özellikler (abstract) içerirler, bunlar türetilmiş sınıflar tarafından uygulanmalıdır. Soyut üyeler open gerektirmez. Soyut sınıf da kalıtım için open olmadan kullanılabilir.
    abstract class AbsBase {
        abstract fun abstractMethod()
        open fun concreteMethod() { /* ... */ }
    }
    
    class AbsDerived : AbsBase() {
        override fun abstractMethod() { /* ... */ }
    }
    

Genel olarak, Kotlin açıklık ilkesini benimser ve kalıtım ile geçersiz kılma işlemleri için open kullanımını zorunlu kılar.