Sobes.tech
Junior

Layihələrinizdə abstrakt siniflərdən istifadə etdinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Bəli, istifadə etmişəm. Mücərrəd sinflər ümumi metodlar və xüsusiyyətlərlə əsas strukturlar yaratmaq üçün istifadə olunurdu və sonra konkret sinflər tərəfindən miras alınırdı.

// Mücərrəd sinfin elan olunması
public abstract class Shape
{
    // Miras alan siniflərdə tətbiq olunmalı mücərrəd metod
    public abstract double GetArea();

    // Standart tətbiqi olan virtual metod, üzərində dəyişiklik edilə bilər
    public virtual void Draw()
    {
        Console.WriteLine("Formanın çəkilməsi.");
    }
}

// Shape-dən miras alan konkret sinif
public class Circle : Shape
{
    public double Radius { get; set; }

    public Circle(double radius)
    {
        Radius = radius;
    }

    // Mücərrəd metodun tətbiqi
    public override double GetArea()
    {
        return Math.PI * Radius * Radius;
    }

    // Virtual metodun üzərində dəyişiklik
    public override void Draw()
    {
        Console.WriteLine($"Yarıçapı {Radius} olan dairə çəkilir.");
    }
}

Əsas istifadə ssenariləri:

  • Ümumi müqavilənin müəyyənləşdirilməsi: Mücərrəd sinflər bütün törəmə sinflərdə olmalı olan metodlar və xüsusiyyətlər toplusunu müəyyən etməyə imkan verir.
  • Qismən tətbiq: Əsas sinifdə funksionallığın qismən tətbiqini təmin etmək, törəmə sinflərdə kod təkrarlamasını qarşısını alır.
  • Layihə nümunəsi: Tez-tez "Şablon Metod" kimi nümunələrin tətbiqində istifadə olunur.

İnterfeyslərlə fərqləri:

Xüsusiyyət Mücərrəd sinif İnterfeys
Miras Çoxlu miras qadağandır Çoxlu tətbiq etmək mümkündür
Tətbiq Metodların tətbiqini içərə bilər C# 8.0-ə qədər - yalnız bəyanatlar, sonra - standart tətbiqlər
Üzvlər Sahələr, konstruktorlar, virtual/mücərrəd/adi metodlar ola bilər C# 8.0-ə qədər - yalnız metodlar və xüsusiyyətlər, sonra - həmçinin statik üzvlər və default tətbiqlər
Vəziyyət Vəziyyətə malik ola bilər (sahələr vasitəsilə) Vəziyyətə malik ola bilməz