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
openilə 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
openilə qeyd olunmalı və irsi sinifdəoverrideistifadə edilməlidir.Əgər əsas sinifin metod və ya xüsusiyyətiopen class Base { open fun process() { /* ... */ } open val value: Int = 0 } class Derived : Base() { override fun process() { /* ... */ } override val value: Int = 1 }openilə qeyd olunmayıbsa, onları üst-üstə yaza bilməzsiniz. - Əsas sinifin üzvlərinə giriş: Əsas sinifin üzvlərinə irsi sinifdən giriş
superaç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əropentələb etmir. Abstrakt sinf dəopenolmadan 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.