Sobes.tech
Junior — Middle

Kāda ir atšķirība starp abstraktās klases un saskarnes izmantošanu klases līgumu noteikšanā?

sobes.tech AI

Atbilde no AI

C# valodā abstrakta klase un interfeiss kalpo līgumu noteikšanai, bet tiem ir galvenās atšķirības:

  • Abstrakta klase var saturēt metožu, lauku, konstruktoru un īpašību realizāciju. To izmanto, ja nepieciešams noteikt pamatrealizāciju un kopīgu funkcionalitāti mantoņiem.
  • Interfeiss nosaka tikai metožu, īpašību un notikumu parakstus bez realizācijas (līdz C# 8.0; no C# 8.0 interfeisi var saturēt noklusējuma realizāciju).

Turklāt, klase var manto tikai no viena abstrakta klases, bet var realizēt vairākus interfeisus.

Piemērs:

abstract class Animal
{
    public abstract void MakeSound();
    public void Sleep() { Console.WriteLine("Guļ"); }
}

interface IFlyable
{
    void Fly();
}

class Bird : Animal, IFlyable
{
    public override void MakeSound() { Console.WriteLine("Čirč"); }
    public void Fly() { Console.WriteLine("Lido"); }
}

Tādējādi, abstraktā klase ir piemērota kopējai pamatuzvedībai, bet interfeiss – noteiktu iespēju kopumam, ko var īstenot dažādas klases.