Sobes.tech
Junior — Middle

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

sobes.tech AI

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

მთავარი განსხვავება აბსტრაქტული კლასი და ინტერფეისის შორის არის ის, რომ აბსტრაქტული კლასი შეიძლება შეიცავდეს მეთოდების რეალიზაციას და მდგომარეობას (მინდვრებს), მაშინ როდესაც ინტერფეისი მხოლოდ მეთოდების ხელმოწერებს განსაზღვრავს რეალიზაციის გარეშე (C# 8.0-მდე). აბსტრაქტული კლასი გამოიყენება, როდესაც საჭიროა ძირითადი რეალიზაციის და საერთო ფუნქციონალობის განსაზღვრა მემკვიდრეებისთვის, ხოლო ინტერფეისი — კონტრაქტის განსაზღვრისთვის, რომელიც კლასებმა უნდა შეასრულონ, независимо მათი იერარქიიდან.

მაგალითი:

// აბსტრაქტული კლასი
public abstract class Animal {
    public void Eat() {
        Console.WriteLine("ჭამა");
    }
    public abstract void MakeSound();
}

// ინტერფეისი
public interface IMovable {
    void Move();
}

// კლასი, რომელიც მემკვიდრეობს აბსტრაქტულ კლასს და ახორციელებს ინტერფეისს
public class Dog : Animal, IMovable {
    public override void MakeSound() {
        Console.WriteLine("ბაყაყი");
    }
    public void Move() {
        Console.WriteLine("ჩქარ სირბილი");
    }
}