Sobes.tech
Middle

Čime se razlikuje apstraktna klasa od interfejsa?

sobes.tech АИ

Одговор од АИ

Apstraktna klasa — to je klasa koja može sadržavati kako implementirane metode, tako i apstraktne (bez implementacije). Služi kao osnova za nasleđivanje i može sadržavati stanje (polja).

Interfejs — to je ugovor koji definiše skup metoda bez implementacije (u klasičnom smislu). Klasa koja implementira interfejs, mora implementirati sve njegove metode.

Glavne razlike:

  • Apstraktna klasa može sadržavati implementaciju i stanje, interfejs — samo potpise metoda (u nekim jezicima, interfejsi mogu sadržavati podrazumevane metode).
  • Klasa može nasleđivati samo od jedne apstraktne klase, ali može implementirati više interfejsa.
  • Apstraktna klasa pruža delimičnu implementaciju, interfejs — samo ugovor.

Primer u Javi:

abstract class Animal {
    void eat() { System.out.println("Jede"); }
    abstract void sound();
}

interface Flyable {
    void fly();
}

class Bird extends Animal implements Flyable {
    void sound() { System.out.println("Cvrkut"); }
    public void fly() { System.out.println("Lete"); }
}