Sobes.tech
Junior

Жобаларыңызда абстракттуу класстарды колдондуңузбу?

sobes.tech AI

AIден жооп

Ооба, мен колдонуп көргөм. Абстракттуу класстар негизги түзүмдөрдү түзүү үчүн колдонулуп, жалпы ыкмалары жана мүнөздөмөлөрү менен, алар кийин конкреттүү класстарга мурас болот.

// Абстракттуу классты жарыялоо
public abstract class Shape
{
    // Абстракттуу ыкма, ал мурас класстарда ишке ашырылышы керек
    public abstract double GetArea();

    // Виртуалдуу ыкма, алдын ала ишке ашырылышы менен, аны кайра иштеп чыгууга болот
    public virtual void Draw()
    {
        Console.WriteLine("Форманы тартуу.");
    }
}

// Конкреттүү класс, Shapeтен мурас алган
public class Circle : Shape
{
    public double Radius { get; set; }

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

    // Абстракттуу ыкманын ишке ашырылышы
    public override double GetArea()
    {
        return Math.PI * Radius * Radius;
    }

    // Виртуалдуу ыкманы кайра иштеп чыгуу
    public override void Draw()
    {
        Console.WriteLine($"Жалпысынан радиусу {Radius} болгон доора тартуу.");
    }
}

Негизги сценарийлер:

  • Жалпы контрактты аныктоо: Абстракттуу класстар бардык мурас класстарда болушу керек болгон ыкмалар жана мүнөздөмөлөрдүн топтомун белгилөөгө мүмкүндүк берет.
  • Бөлүнгөн ишке ашыруу: Негизги класста бөлүнгөн ишке ашыруу мүмкүнчүлүгү, мурас класстарда кодуңузду толук кайталоодон сактайт.
  • Үлгү: "Үлгү ыкма" сыяктуу дизайн үлгүлөрүн ишке ашырууда кеңири колдонулат.

Интерфейстер менен айырмачылыктар:

Өзгөчөлүк Абстракттуу класс Интерфейс
Мурас алуу Көп мурас алуу тыюу салынган Көп ишке ашыруу уруксат берилген
Ишке ашыруу Методуң ишке ашыруу мүмкүн C# 8.0 чейин - гана жарыялоо, 8.0дан кийин - алдын ала ишке ашыруу
Уюшмалар Майда, конструкторлор, виртуалдуу/абстракт/жай ыкмалар болушу мүмкүн C# 8.0 чейин - гана методдор жана мүнөздөмөлөр, кийинчерээк - статикалык мүчөлөр жана алдын ала ишке ашыруу
Абалы Абалы болушу мүмкүн (майдалар аркылуу) Абалы болбойт