Junior — Middle
Kāda ir galvenā atšķirība starp abstrakto klasi un saskarni objektorientētajā programmēšanā?
sobes.tech AI
Atbilde no AI
Galvenā atšķirība starp abstraktu klasi un saskarni ir tā, ka abstrakta klase var saturēt metožu realizāciju un stāvokli (laukus), kamēr saskarne definē tikai metožu parakstus bez realizācijas (līdz C# 8.0). Abstrakta klase tiek izmantota, kad nepieciešams noteikt pamatrealizāciju un kopīgu funkcionalitāti mantiniekiem, bet saskarne – lai definētu līgumu, ko klasēm jāizpilda neatkarīgi no to hierarhijas.
Piemērs:
// Abstrakta klase
public abstract class Animal {
public void Eat() {
Console.WriteLine("Ēd");
}
public abstract void MakeSound();
}
// Saskarne
public interface IMovable {
void Move();
}
// Klase, kas manto no abstraktas klases un realizē saskarni
public class Dog : Animal, IMovable {
public override void MakeSound() {
Console.WriteLine("Lauža");
}
public void Move() {
Console.WriteLine("Skraida");
}
}