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