Sobes.tech
Junior — Middle

Mi a fő különbség az absztrakt osztály és a felület között az objektumorientált programozásban?

sobes.tech MI

Válasz az MI-től

A fő különbség az absztrakt osztály és az interfész között az, hogy az absztrakt osztály tartalmazhat metódus-implementációkat és állapotot (mezőket), míg az interfész csak a metódusok aláírásait határozza meg implementáció nélkül (C# 8.0-ig). Az absztrakt osztályt akkor használják, amikor alapértelmezett implementációt és közös funkciókat szeretnénk meghatározni az örökösök számára, míg az interfész a szerződés meghatározására szolgál, amelyet a osztályoknak teljesíteniük kell, függetlenül azok hierarchiájától.

Példa:

// Absztrakt osztály
public abstract class Animal {
    public void Eat() {
        Console.WriteLine("Eszik");
    }
    public abstract void MakeSound();
}

// Interfész
public interface IMovable {
    void Move();
}

// Osztály, amely örökli az absztrakt osztályt és megvalósítja az interfészt
public class Dog : Animal, IMovable {
    public override void MakeSound() {
        Console.WriteLine("Bark");
    }
    public void Move() {
        Console.WriteLine("Fut");
    }
}