Junior — Middle
Mis on peamine erinevus abstraktse klassi ja liidese vahel objektorienteeritud programmeerimises?
sobes.tech AI
Vastus AI-lt
Peamine erinevus abstraktse klassi ja liidese vahel on see, et abstraktne klass võib sisaldada meetodite rakendusi ja olekut (välju), samas kui liides määratleb ainult meetodite allkirjad ilma rakenduseta (kuni C# 8.0). Abstraktset klassi kasutatakse siis, kui on vaja määratleda alusimplementatsioon ja ühine funktsionaalsus pärijatele, ning liidest kasutatakse lepingu määratlemiseks, mida klassid peavad täitma, sõltumata nende hierarhiast.
Näide:
// Abstraktne klass
public abstract class Animal {
public void Eat() {
Console.WriteLine("Sööb");
}
public abstract void MakeSound();
}
// Liides
public interface IMovable {
void Move();
}
// Klass, mis pärib abstraktse klassi ja rakendab liidest
public class Dog : Animal, IMovable {
public override void MakeSound() {
Console.WriteLine("Haugub");
}
public void Move() {
Console.WriteLine("Jookseb");
}
}