Junior — Middle
Aký je hlavný rozdiel medzi abstraktnou triedou a rozhraním v objektovo orientovanom programovaní?
sobes.tech AI
Odpoveď od AI
Hlavný rozdiel medzi abstraktnou triedou a rozhraním je ten, že abstraktná trieda môže obsahovať implementácie metód a stav (pole), zatiaľ čo rozhranie definuje iba podpisy metód bez implementácie (až do C# 8.0). Abstraktná trieda sa používa, keď je potrebné stanoviť základnú implementáciu a spoločnú funkčnosť pre dedičov, zatiaľ čo rozhranie na definovanie zmluvy, ktorú musia splniť triedy, bez ohľadu na ich hierarchiu.
Príklad:
// Abstraktná trieda
public abstract class Animal {
public void Eat() {
Console.WriteLine("Je");
}
public abstract void MakeSound();
}
// Rozhranie
public interface IMovable {
void Move();
}
// Trieda, ktorá dedí z abstraktnej triedy a implementuje rozhranie
public class Dog : Animal, IMovable {
public override void MakeSound() {
Console.WriteLine("Šteká");
}
public void Move() {
Console.WriteLine("Behá");
}
}