Junior — Middle
Jaký je hlavní rozdíl mezi abstrétní třídou a rozhraním v objektově orientovaném programování?
sobes.tech AI
Odpověď od AI
Hlavní rozdíl mezi abstraktní třídou a rozhraním je ten, že abstraktní třída může obsahovat implementace metod a stav (pole), zatímco rozhraní definuje pouze podpisy metod bez implementace (až do C# 8.0). Abstraktní třída se používá, když je třeba stanovit základní implementaci a společnou funkčnost pro dědice, zatímco rozhraní slouží k definování smlouvy, kterou musí třídy splnit, bez ohledu na jejich hierarchii.
Příklad:
// Abstraktní třída
public abstract class Animal {
public void Eat() {
Console.WriteLine("Jí");
}
public abstract void MakeSound();
}
// Rozhraní
public interface IMovable {
void Move();
}
// Třída, která dědí z abstraktní třídy a implementuje rozhraní
public class Dog : Animal, IMovable {
public override void MakeSound() {
Console.WriteLine("Štěká");
}
public void Move() {
Console.WriteLine("Běží");
}
}