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