Sobes.tech
Junior

Loyihalaringizda abstrakt sinflardan foydalandingizmi?

sobes.tech AI

AIdan javob

Ha, foydalanilganman. Abstrakt sinflar umumiy metodlar va xususiyatlar bilan asosiy tuzilmalarni yaratish uchun ishlatilardi va keyin aniq sinflar tomonidan meros olinardi.

// Abstrakt sinf e'lon qilish
public abstract class Shape
{
    // Meros oluvchi sinflarda amalga oshirilishi kerak bo'lgan abstrakt metod
    public abstract double GetArea();

    // Standart amalga oshirish bilan virtual metod, uni qayta yozish mumkin
    public virtual void Draw()
    {
        Console.WriteLine("Shakl chizilmoqda.");
    }
}

// Shape'dan meros olgan aniq sinf
public class Circle : Shape
{
    public double Radius { get; set; }

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

    // Abstrakt metodni amalga oshirish
    public override double GetArea()
    {
        return Math.PI * Radius * Radius;
    }

    // Virtual metodni qayta yozish
    public override void Draw()
    {
        Console.WriteLine($"Radiusi {Radius} bo'lgan doira chizilmoqda.");
    }
}

Asosiy foydalanish holatlari:

  • Umumiy shartnoma belgilash: Abstrakt sinflar barcha meros oluvchi sinflarda bo'lishi kerak bo'lgan metodlar va xususiyatlar to'plamini belgilash imkonini beradi.
  • Qisman amalga oshirish: Asosiy sinfda funksionallikning qisman amalga oshirilishini ta'minlash, meros oluvchilarda kod takrorlanishini oldini oladi.
  • Loyihalash shabloni: Ko'pincha "Shablon metod" kabi shablonlarni amalga oshirishda ishlatiladi.

Interfeyslar bilan farqlari:

Xususiyat Abstrakt sinf Interfeys
Merosi Ko'p merosga ruxsat etilmaydi Ko'p merosga ruxsat etiladi
Amalga oshirish Metodlarning amalga oshirilishini o'z ichiga olishi mumkin C# 8.0gacha - faqat e'lonlar, keyin - standart amalga oshirish
A'zolar Maydonlar, konstruktorlar, virtual/abstrakt/oddiy metodlar bo'lishi mumkin C# 8.0gacha - faqat metodlar va xususiyatlar, keyin - statik a'zolar va standart amalga oshirishlar
Holat Holatga ega bo'lishi mumkin (maydonlar orqali) Holatga ega bo'lish mumkin emas