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("Եզրակացություն");
    }
}