Junior
Kotlin-ში კლასი და ინტერფეისი შორის ძირითადი განსხვავებები რა არის?
sobes.tech AI
პასუხი AI-სგან
- კლასი: თვისებებს (სტატუსებს) და ფუნქციებს (მოქმედებას) შეიცავს. შეიძლება იყოს აბსტრაქტული, გახსნილი (მემკვიდრეობისთვის) ან ფინალური. კონსტრუქტორები განსაზღვრავენ ობიექტების შექმნის მეთოდს. მხარს უჭერს მემკვიდრეობას ერთი კლასი და მრავალი ინტერფეისის რეალიზაციას.
- ინტერფეისი: განსაზღვრავს ქცევის კონტრაქტს, რომელიც კლასებმა უნდა განახორციელონ. შეიძლება შეიცავდეს აბსტრაქტულ ფუნქციებს და თვისებებს, ასევე რეალიზებულ ფუნქციებს (Java 8+). არ შეუძლია შეიცავდეს სტატუსებს (მხოლოდ აბსტრაქტული თვისებები). კლასი შეუძლია რამდენიმე ინტერფეისი განახორციელოს. არ აქვს კონსტრუქტორები.
შედარებითი სია:
| ასპექტი | კლასი | ინტერფეისი |
|---|---|---|
| სტატუსი | შეიძლება ჰქონდეს თვისებები მნიშვნელობით. | არ შეუძლია ჰქონდეს მნიშვნელობით თვისებები (მხოლოდ აბსტრაქტული). |
| კონსტრუქტორები | შეიძლება იყოს. | არ აქვთ. |
| რეალიზაცია | შეიძლება უზრუნველყოს სრული რეალიზაცია. | უზრუნველყოფს ნაწილობრივ ან სრული რეალიზაციას (default-მეთოდებით). |
| მემკვიდრეობა | მემკვიდრეობს ერთ კლასზე. | რეალიზებს მრავალი ინტერფეისს. |
| ინიციალიზაცია | შეიძლება იყოს ინსტანცირებული. | პირდაპირ ინსტანცირება შეუძლებელია. |
| ტიპი | კონკრეტული ან აბსტრაქტული. | მხოლოდ ქცევის კონტრაქტი. |
კლასის მაგალითი:
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!")
}
}