Sobes.tech
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!")
    }
}