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