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 {Radius}.");
    }
}

Հիմնական սցենարներ:

  • Ընդհանուր պայմանագրի սահմանում: Աբստրակտ դասերը թույլ են տալիս սահմանել մեթոդների և հատկությունների հավաքածու, որոնք պետք է լինեն բոլոր ժառանգական դասերում:
  • Հատուկ իրագործում: Հնարավորություն է տրամադրել մասնակի իրագործում հիմնական դասում՝ խուսափելով կոդի լրացուցիչ կրկնությունից ժառանգական դասերում:
  • Նմուշ: Օգտագործվում է օրինակների, ինչպիսիք են "Նմուշային մեթոդ" ձևավորման ձևանմուշները:

Տարբերությունները ինտերֆեյսներից:

Գծանշում Աբստրակտ դասը Ինտերֆեյսը
Ներառում Միջնորդական ժառանգությունը արգելված է Միջնորդական իրագործումը թույլատրված է
Իրագործում Կարող է պարունակել մեթոդների իրագործում Մինչ C# 8.0 - միայն հայտարարություններ, հետո - նախնական իրագործում
Անդամներ Կարող է ունենալ դաշտեր, կոնստրուկտորներ, վիրտուալ/աբստրակտ/հիմնական մեթոդներ Մինչ C# 8.0 - միայն մեթոդներ և հատկություններ, հետո - նաև ստատիկ անդամներ և նախնական իրագործումներ
Կարգավիճակ Կարող է ունենալ վիճակ (դաշտերով) Չեն կարող ունենալ վիճակ