Sobes.tech
Junior

Ինչպես է կատարվում ժառանգությունը Kotlin լեզվում?

sobes.tech AI

Պատասխան AI-ից

Kotlin- ում ժառանգությունը հիմնված է open և override բանալի բառերի վրա: Սինֆոն և մեթոդները նախնական կարգով final են, ինչը նշանակում է, որ դրանք ժառանգել կամ վերաշարադրել հնարավոր չէ: Ժառանգության թույլտվություն տալու համար, սինֆոն կամ մեթոդ պետք է նշվի open մոդիֆիկատորով:

Նոր ժառանգական սինֆոն ստեղծելու համար, օգտագործվում է երկու կետ : նախքան ժառանգական սինֆոնի անունը, որի հետո գալիս է հիմնական սինֆոնի անունը և նրա կոնստրուկտորը:

open class Base(val name: String) {
    open fun greet() {
        println("Բարև, $name")
    }
}

Հիմնական սինֆոնի մեթոդը վերաշարադրելու համար, օգտագործվում է override մոդիֆիկատորը:

class Derived(name: String) : Base(name) {
    override fun greet() {
        println("Հարգանքներ, $name")
    }
}

Եթե հիմնական սինֆոնը ունի կոնստրուկտոր, որը պարամետրեր է պարունակում, ժառանգական սինֆոնը պետք է այն կանչի super բանալիով:

Kotlin-ը աջակցում է բազմաբնույթ ժառանգությանը ինտերֆեյսների միջոցով, բայց ոչ դասերի: Միայն մեկ դասից կարելի է ժառանգել:

Սինֆոնը կարող է նաև նշվել որպես protected, internal կամ private, սահմանափակելով դրանց տեսանելիությունը ժառանգական սինֆոնների կամ մոդուլի շրջանակներում:

Աբստրակտ սինֆոնները հայտարարում են abstract բանալի բառով: Դրանք կարող են պարունակել ինչպես աբստրակտ (չիրականացված), այնպես էլ սովորական մեթոդներ: Աբստրակտ մեթոդները չեն պահանջում open, քանի որ ենթադրվում է, որ դրանք վերաշարադրվելու են: Աբստրակտ սինֆոնները չեն կարող անմիջապես ինստանցիա ստանալ:

abstract class Shape {
    abstract fun draw()
    open fun printInfo() {
        println("Սա ձև է։")
    }
}

Այսպիսով, Kotlin- ում ժառանգությունը բացահայտորեն վերահսկվում է open և override մոդիֆիկատորների միջոցով, ինչը բարելավում է ընթերցելիությունը և կանխում անպատճառ ժառանգությունը։