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