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
openolarak 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
openile işaretlenmiş olmalı ve türetilmiş sınıftaoverrideanahtar kelimesi kullanılmalıdır.Eğer temel sınıfın yöntemi veya özelliğiopen class Base { open fun process() { /* ... */ } open val value: Int = 0 } class Derived : Base() { override fun process() { /* ... */ } override val value: Int = 1 }openolarak 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,
superanahtar 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 üyeleropengerektirmez. Soyut sınıf da kalıtım içinopenolmadan 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.