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("Учуп жатат"); }
}
Ушул жол менен, абстракттуу класс жалпы негизги жүрүм-турум үчүн ылайыктуу, ал эми интерфейс ар кандай класстар тарабынан ишке ашырылышы мүмкүн болгон мүмкүнчүлүктөрдүн топтомун аныктайт.