Middle
Дар кадом ҳолатҳо бояд интерфейс истифода шавад ва дар кадом ҳолатҳо — синфи абстрактӣ?
sobes.tech AI
Ҷавоб аз AI
Истифодаи интерфейсҳо барои муайян кардани шартнома барои рафтор, ки онҳоро метавон дар класиҳо амалӣ кард. Ин имкон медиҳад, ки полиморфизм ба даст ояд ва пайвастагии байни класиҳо суст карда шавад. Дар класи метавонад чандин интерфейс бошад, аммо танҳо як класи асосӣ.
Истифодаи класиҳои абстрактӣ, вақте ки шумо як амалӣ кардани умумии қисмати функсионалӣ доред ва мехоҳед структураи асосиро барои класиҳои фарзанд пешниҳод кунед. Класиҳои абстрактӣ метавонанд методҳои абстрактӣ ва оддӣ, инчунин майдонҳоро дар бар гиранд. Ин мувофиқ аст, вақте ки лозим аст, ки наслеъ "ист".
| Нишондиҳанда | Интерфейс | Класи абстрактӣ |
|---|---|---|
| Наследии бисёр | Бале | Не |
| Муддати амалишавӣ | Не (то .NET 8 бо методҳои интерфейси пешфарзӣ) | Бале, қисман ё пурра |
| Майдонҳо | Не | Бале |
| Конструкторҳо | Не | Бале |
| Намуди муносибат | "метавонад созад" ("has-a") | "ист" ("is-a") |
Маслиҳат барои истифодаи интерфейс:
// Муайян кардани шартнома барои объектҳое, ки метавонанд парвоз кунанд
public interface IFlyable
{
void Fly();
}
// Класи ҳавопаймо интерфейси IFlyable-ро амалӣ мекунад
public class Airplane : IFlyable
{
public void Fly()
{
// Амалӣ кардани парвози ҳавопаймо
Console.WriteLine("Ҳавопаймо парвоз мекунад");
}
}
// Класи parвозро инчунин интерфейси IFlyable-ро амалӣ мекунад
public class Bird : IFlyable
{
public void Fly()
{
// Амалӣ кардани парвози parвоз
Console.WriteLine("Парвоз парвоз мекунад");
}
}
Маслиҳат барои истифодаи класи абстрактӣ:
// Класи абстрактии ҳайвонот бо амалӣ кардани умумии нафаскашӣ
public abstract class Animal
{
public void Breathe()
{
Console.WriteLine("Ҳайвонот нафас мегирад");
}
// Метод абстрактӣ, ки бояд дар класиҳои фарзанд амалӣ карда шавад
public abstract void MakeSound();
}
// Класи муш, ки аз Animal мерос мегирад
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Гав!");
}
}
// Класи мурғ, ки аз Animal мерос мегирад
public class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("Мяу!");
}
}