Sobes.tech
Middle

Hansı hallarda interfeys istifadə edilməlidir və hansı hallarda abstrakt sinif?

sobes.tech Süni İntellekt

AI-dan cavab

İşlev davranış müqaviləsini müəyyən etmək üçün interfeyslərdən istifadə edin, bu, sinflər tərəfindən həyata keçirilə bilər. Bu, çox formallıq əldə etməyə imkan verir və sinflər arasındakı əlaqəni zəiflədir. Bir sinif çoxlu interfeyslərə sahib ola bilər, lakin yalnız bir əsas sinif.

Ümumi funksionallığın bir hissəsinin həyata keçirilməsi və törəmə sinflər üçün əsas struktur təmin etmək istədiyiniz zaman abstrakt siniflərdən istifadə edin. Abstrakt siniflər abstrakt və adi metodlar, həmçinin sahələr içərə bilər. "ol" tələb olunan irsiyyət üçün uyğundur.

Xüsusiyyət İnterfeys Abstrakt sinif
Çoxlu irsiyyət Bəli Xeyr
Həyata keçirmə Xeyr ( .NET 8-ə qədər standart interfeys metodları ilə) Bəli, qismən və ya tam
Sahələr Xeyr Bəli
Konstruktorlar Xeyr Bəli
Əlaqə növü " edə bilər" ("has-a") "dır" ("is-a")

İnterfeys istifadəsinə nümunə:

// Uçmaq qabiliyyətinə malik obyektlər üçün müqaviləni müəyyən edirik
public interface IFlyable
{
    void Fly();
}

// Təyyarə sinfi IFlyable interfeysini həyata keçirir
public class Airplane : IFlyable
{
    public void Fly()
    {
        // Təyyarənin uçuşunun həyata keçirilməsi
        Console.WriteLine("Təyyarə uçur");
    }
}

// Quş sinfi də IFlyable interfeysini həyata keçirir
public class Bird : IFlyable
{
    public void Fly()
    {
        // Quşun uçuşunun həyata keçirilməsi
        Console.WriteLine("Quş uçur");
    }
}

Abstrakt sinif istifadəsinə nümunə:

// Ümumi nəfəs alma həyata keçirən abstrakt sinif Animal
public abstract class Animal
{
    public void Breathe()
    {
        Console.WriteLine("Heyvan nəfəs alır");
    }

    // Törəmə sinflər tərəfindən həyata keçirilməli olan abstrakt metod
    public abstract void MakeSound();
}

// Animal-dən törəyən konkret it sinfi
public class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Hau!");
    }
}

// Animal-dən törəyən konkret pişik sinfi
public class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Miyav!");
    }
}