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");
}
}