Junior — Middle
Sinflər üçün müqavilələri təyin edərkən abstrakt sinif və interfeys istifadə etmək arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
C# dilində abstrakt sinif və interfeys müqavilələri müəyyən etmək üçün istifadə olunur, lakin əsas fərqlərə malikdir:
- Abstrakt sinif metodların, sahələrin, qurucuların və xüsusiyyətlərin tətbiqini ehtiva edə bilər. Bu, irsi üçün əsas tətbiqi və ümumi funksionallığı müəyyən etmək istədiyiniz zaman istifadə olunur.
- İnterfeys yalnız metodların, xüsusiyyətlərin və hadisələrin imzalarını təyin edir, tətbiqini daxil etmir (C# 8.0-ə qədər; C# 8.0-dən başlayaraq, interfeyslər standart tətbiqlər daxil edə bilər).
Həmçinin, sinif yalnız bir abstrakt sinifdən irs ala bilər, lakin çoxlu interfeysləri tətbiq edə bilər.
Nümunə:
abstract class Animal
{
public abstract void MakeSound();
public void Sleep() { Console.WriteLine("Yatır"); }
}
interface IFlyable
{
void Fly();
}
class Bird : Animal, IFlyable
{
public override void MakeSound() { Console.WriteLine("Cıvıldamaq"); }
public void Fly() { Console.WriteLine("Uçmaq"); }
}
Beləliklə, abstrakt sinif ümumi əsas davranış üçün uyğundur, və interfeys müxtəlif sinflər tərəfindən həyata keçirilə biləcək imkanlar toplusunu müəyyən edir.