Middle
Интерфейсҳо барои чӣ лозиманд, агар аллакай синфҳои абстрактӣ мавҷуд бошанд?
sobes.tech AI
Ҷавоб аз AI
- Би-масъулият дар мерос. Класс метавонад чандин интерфейсҳоро иҷро кунад, аммо танҳо аз як класс (аз ҷумла абстрактҳо) мерос мегирад.
interface IDrivable {} interface IFlyable {} class Car : IDrivable {} // Мерос танҳо аз як класс (объект ғайрирасмӣ) class FlyingCar : IDrivable, IFlyable {} // Иҷрои чандин интерфейс - Шартнома бе иҷроиш. Интерфейсҳо танҳо шартномаро (усулҳо, хусусиятҳо, ҳодисаҳо, индексаторҳо) муайян мекунанд, бе ягон иҷроиш. Классҳои абстрактӣ метавонанд функсионалиятро қисман иҷро кунанд ва майдонҳоро дошта бошанд.
interface IShape { double GetArea(); // Танҳо эълон } abstract class Shape { public abstract double GetArea(); // Эълон public string Color { get; set; } // Иҷрои хусусият public void DisplayColor() { Console.WriteLine($"Ранг: {Color}"); // Методи иҷрошуда } } - Пайвасти мулоим (loose coupling). Интерфейсҳо ба пайвасти мулоим байни компонентҳо мусоидат мекунанд, зеро код аз шартнома, на аз иҷрои мушаххас, вобаста аст. Ин осонтар мекунад, ки як иҷрои иваз карда шавад.
- Ҷудо кардани нақшҳо. Интерфейсҳо имкон медиҳанд, ки нақшҳо ё имкониятҳои равшан муайян карда шаванд, ки бояд дар класс дошта бошанд, новобаста аз намуди асосӣ ё хати мерос.
- Тест. Мокҳо ва стубҳо барои тестҳои воҳидӣ аксар вақт дар асоси интерфейсҳо сохта мешаванд, на дар асоси классҳои абстрактӣ, зеро онҳо метавонанд вобастагиҳо ё мантиқи дохилии мураккаб дошта бошанд.
Хулоса: Интерфейсҳо механизмҳои чандир барои муайян кардани шартномаҳо ва расидан ба полиморфизмро таъмин мекунанд, бе маҳдудиятҳои мерос аз як класс асосӣ, дар ҳоле ки классҳои абстрактӣ барои пешниҳоди иҷрои қисман ва функсионалияти асосӣ пешбинӣ шудаанд, ки дар классҳои даравӣ пурра карда мешаванд.