Sobes.tech
Junior — Middle

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

sobes.tech AI

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

C# დილაში აბსტრაქტული კლასი და ინტერფეისი სერვისებს განსაზღვრავს, მაგრამ ძირითადი განსხვავებები აქვთ:

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

ასევე, კლასი შეიძლება მემკვიდრეობით მხოლოდ ერთი აბსტრაქტული კლასისგან, მაგრამ მრავალი ინტერფეისი შეიძლება განახორციელოს.

მაგალითი:

abstract class Animal
{
    public abstract void MakeSound();
    public void Sleep() { Console.WriteLine("ძინავს"); }
}

interface IFlyable
{
    void Fly();
}

class Bird : Animal, IFlyable
{
    public override void MakeSound() { Console.WriteLine("ჩირჩ"); }
    public void Fly() { Console.WriteLine("ფრენა"); }
}

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