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.