Ինչպես է կատարվում ժառանգությունը 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 մոդիֆիկատորների միջոցով, ինչը բարելավում է ընթերցելիությունը և կանխում անպատճառ ժառանգությունը։