Sobes.tech
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");
    }
}