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 |