Junior — Middle
Koja je glavna razlika između apstraktne klase i interfejsa u objektno-orijentisanom programiranju?
sobes.tech АИ
Одговор од АИ
Glavna razlika između apstraktne klase i interfejsa je ta što apstraktna klasa može sadržavati implementacije metoda i stanje (polja), dok interfejs definiše samo potpise metoda bez implementacije (do C# 8.0). Apstraktna klasa se koristi kada je potrebno postaviti osnovnu implementaciju i zajedničku funkcionalnost za naslednike, dok je interfejs za definisanje ugovora koji klase moraju ispuniti, bez obzira na njihovu hijerarhiju.
Primer:
// Apstraktna klasa
public abstract class Animal {
public void Eat() {
Console.WriteLine("Jede");
}
public abstract void MakeSound();
}
// Interfejs
public interface IMovable {
void Move();
}
// Klasa koja nasleđuje apstraktnu klasu i implementira interfejs
public class Dog : Animal, IMovable {
public override void MakeSound() {
Console.WriteLine("Laje");
}
public void Move() {
Console.WriteLine("Trči");
}
}