Junior — Middle
Kokia pagrindinė skirtumas tarp abstrakčiosios klasės ir sąsajos objektų orientuotoje programavime?
sobes.tech AI
Atsakymas iš AI
Pagrindinis skirtumas tarp abstrakčiosios klasės ir sąsajos yra tas, kad abstrakčioji klasė gali turėti metodų įgyvendinimą ir būseną (laukus), o sąsaja tik apibrėžia metodų parašus be įgyvendinimo (iki C# 8.0). Abstrakčioji klasė naudojama, kai reikia nustatyti pagrindinį įgyvendinimą ir bendrą funkcionalumą paveldėtojams, o sąsaja – norint apibrėžti sutartį, kurią turi įgyvendinti klasės, nepriklausomai nuo jų hierarchijos.
Pavyzdys:
// Abstrakčioji klasė
public abstract class Animal {
public void Eat() {
Console.WriteLine("Valgo");
}
public abstract void MakeSound();
}
// Sąsaja
public interface IMovable {
void Move();
}
// Klasė, paveldinti iš abstrakčiosios klasės ir įgyvendinti sąsają
public class Dog : Animal, IMovable {
public override void MakeSound() {
Console.WriteLine("Laužia");
}
public void Move() {
Console.WriteLine("Bėga");
}
}