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 |