Junior
Ի՞նչ են Kotlin-ում դասի և ինտերֆեյսի հիմնական տարբերությունները։
sobes.tech AI
Պատասխան AI-ից
- Դաս: կարող է պարունակել հատկություններ (պայմաններ) և ֆունկցիաներ (գործողություններ): Կարող է լինել աբստրակտ, բաց (հետագա ժառանգության համար) կամ վերջնական: Կառուցողները որոշում են օբյեկտների ստեղծման եղանակը: Պատրաստ է ժառանգել մեկ դասից և բազմակի ինտերֆեյսների իրականացմանը:
- Ինտերֆեյս: սահմանում է վարքագծի պայմանագիր, որը դասերը պետք է իրականացնեն: Կարող է պարունակել աբստրակտ ֆունկցիաների և հատկությունների հայտարարություններ, ինչպես նաև ֆունկցիաներ իրականացման հետ (Java 8+): Չի կարող պարունակել վիճակներ (հետևի դաշտով հատկություններ): Մի դաս կարող է իրականացնել մի քանի ինտերֆեյս: Չի ունի կառուցողներ:
Համեմատական աղյուսակ:
| Աспեկտ | Դաս | Ինտերֆեյս |
|---|---|---|
| Վիճակ | Կարող է ունենալ արժեքով հատկություններ: | Չի կարող ունենալ արժեքով հատկություններ (միայն աբստրակտ): |
| Կառուցողներ | Կարող են լինել: | Չեն ունենում: |
| Իրականացում | Կարող է տրամադրել լրիվ իրականացում: | Պատրաստ է մասամբ կամ լրիվ իրականացման (առանց նախնական մեթոդների): |
| ժառանգություն | ժառանգում է մեկ դասից: | Իրականացնում է մի քանի ինտերֆեյս: |
| Ինիցիալիզացիա | Կարող է լինել ինстанցիացվող: | Չի կարող ուղղակի ինстанցիացվել: |
| Տիպ | կոնկրետ կամ աբստրակտ: | միայն վարքագծի պայմանագիր: |
Օրինակ դաս:
class Person(val name: String) { // դաս՝ կոնստրուկտոր և հատկություն
fun greet() {
println("Hello, my name is $name")
}
}
Օրինակ ինտերֆեյս:
interface Greeter { // ինտերֆեյս՝ մեթոդով
fun greet()
}
class EnglishGreeter : Greeter { // դաս, որը իրականացնում է ինտերֆեյսը
override fun greet() {
println("Hello!")
}
}