Sobes.tech
Junior — Middle

U čemu se sastoji primena podrazumevanih metoda u interfejsima i apstraktnim klasama, i kako se razlikuju?

sobes.tech АИ

Одговор од АИ

Podrazumevane metode (default methods) u Java interfejsima su metode sa implementacijom koje omogućavaju dodavanje novih metoda u interfejse bez narušavanja postojećih implementacija. Uvedene su u Java 8.

Primena podrazumevanih metoda u interfejsima:

  • Omogućavaju proširenje interfejsa bez lomljenja koda klasa koje ih implementiraju.
  • Obezbeđuju osnovnu implementaciju koju je moguće prepisati.

Apstraktne klase mogu sadržavati i apstraktne (bez implementacije) i implementirane metode. Služe za kreiranje osnovne klase sa zajedničkom logikom.

Glavne razlike:

  • Interfejs sa podrazumevanim metodama ne može imati stanje (polja), osim konstanti.
  • Apstraktna klasa može sadržavati polja i konstruktore.
  • Klasa može implementirati više interfejsa, ali nasleđuje samo jednu apstraktnu klasu.

Primer podrazumevane metode u interfejsu:

public interface Logger {
    void log(String message);

    default void logError(String error) {
        log("GREŠKA: " + error);
    }
}

Ovde je logError podrazumevana metoda sa implementacijom, koja se može koristiti ili prepisati u klasama koje implementiraju interfejs.