Sobes.tech
Junior

Kotlin-də irsiyyət necə işləyir?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də irsiyyət açıq sinflər prinsipi əsasında qurulmuşdur. Əsasən, bütün sinflər final (qapalı) sayılır və sinfi irsiyyətə açıq etmək üçün onu açıq open açar sözü ilə qeyd etmək lazımdır.

Əsas məqamlar:

  • Açıq sinflər: Əsas sinif open ilə qeyd olunmalıdır.
    open class Base {
        // ...
    }
    
  • İrsiyyət: İrsiyyət iki nöqtə (:) istifadə edilərək həyata keçirilir, ardınca əsas sinfin adı və lazım gəldikdə onun konstruktorunun çağırılması gəlir.
    class Derived : Base() {
        // ...
    }
    
  • Yöntem və xüsusiyyətlərin üst-üstə yazılması: Əsas sinifin metod və ya xüsusiyyətlərini üst-üstə yazmaq üçün, bunlar open ilə qeyd olunmalı və irsi sinifdə override istifadə edilməlidir.
    open class Base {
        open fun process() { /* ... */ }
        open val value: Int = 0
    }
    
    class Derived : Base() {
        override fun process() { /* ... */ }
        override val value: Int = 1
    }
    
    Əgər əsas sinifin metod və ya xüsusiyyəti open ilə qeyd olunmayıbsa, onları üst-üstə yaza bilməzsiniz.
  • Əsas sinifin üzvlərinə giriş: Əsas sinifin üzvlərinə irsi sinifdən giriş super açar sözü ilə həyata keçirilir.
    class Derived : Base() {
        override fun process() {
            super.process() // Əsas sinif metodunun çağırılması
            // ...
        }
    }
    
  • Konstruktorlar: Əgər əsas sinifin parametrli konstruktoru varsa, irsi sinif bu konstruktoru öz imzasında çağırmalıdır.
    open class Base(name: String) {
        // ...
    }
    
    class Derived(name: String, age: Int) : Base(name) {
        // ...
    }
    
  • İnterfeyslər: Bir sinif bir neçə interfeisi həyata keçirə bilər və bunlar, əgər varsa, irsi sinifdən sonra vergül ilə ayrılır. İnterfeyslər default olaraq "açıq"dır və həyata keçirilməyə hazırdır.
    interface MyInterface {
        fun doSomething()
    }
    
    class MyClass : Base(), MyInterface {
        override fun doSomething() { /* ... */ }
    }
    
  • Abstrakt sinflər: Abstrakt sinflər, qismən həyata keçirilməni müəyyən etmək üçün istifadə olunur və abstrakt metodlar və xüsusiyyətlər (abstract) ehtiva edir, bunlar irsi siniflərdə həyata keçirilməlidir. Abstrakt üzvlər open tələb etmir. Abstrakt sinf də open olmadan irsiyyətə açıqdır.
    abstract class AbsBase {
        abstract fun abstractMethod()
        open fun concreteMethod() { /* ... */ }
    }
    
    class AbsDerived : AbsBase() {
        override fun abstractMethod() { /* ... */ }
    }
    

Ümumiyyətlə, Kotlin aydınlığa can atır və irsiyyət və üst-üstə yazma üçün open istifadə edilməsini tələb edir.