Sobes.tech
Middle

რა განსხვავებაა აბსტრაქტულ კლასსა და ინტერფეისს შორის?

sobes.tech AI

პასუხი AI-სგან

აბსტრაქტული კლასი — ეს არის კლასი, რომელიც შეიძლება შეიცავდეს როგორც განხორციელებულ მეთოდებს, ასევე აბსტრაქტულ (განხორციელების გარეშე) მეთოდებს. ის служит საფუძველს მემკვიდრეობისთვის და შეიძლება შეიცავდეს მდგომარეობას (მინდვრებს).

ინტერფეისი — ეს არის კონტრაქტი, რომელიც განსაზღვრავს მეთოდების ნაკრებს გარეშე განხორციელებას (კლასიკური გაგებით). კლასი, რომელიც ახორციელებს ინტერფეისს, ვალდებულია ყველა მისი მეთოდი განახორციელოს.

ძირითადი განსხვავებები:

  • აბსტრაქტული კლასი შეიძლება შეიცავდეს განხორციელებას და მდგომარეობას, ინტერფეისი — მხოლოდ მეთოდების ხელმოწერებს (ზოგი ენა, ინტერფეისები შეიძლება შეიცავდეს დეფოლტ მეთოდებს).
  • კლასი შეიძლება მემკვიდრეობით მიიღოს მხოლოდ ერთი აბსტრაქტული კლასი, მაგრამ შეუძლია რამდენიმე ინტერფეისი განახორციელოს.
  • აბსტრაქტული კლასი უზრუნველყოფს ნაწილობრივ განხორციელებას, ინტერფეისი — მხოლოდ კონტრაქტს.

Java მაგალითი:

abstract class Animal {
    void eat() { System.out.println("ჭამა"); }
    abstract void sound();
}

interface Flyable {
    void fly();
}

class Bird extends Animal implements Flyable {
    void sound() { System.out.println("ჩირ ჩირ"); }
    public void fly() { System.out.println("ფრენა"); }
}