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