Deo zbornika Učimo Javu

Apstraktne klase

Apstraktne klase ne mogu imati instance. U hijerarhiji nasljeđivanja, one se koriste isključivo kao nadklase, tj. iz nje se izvode klase koje dijele zajednički dizajn. Izvedene klase, koje mogu imati instance, se nazivaju konkretnim klasama.

Apstraktna klase se definira dodavanjem ključne riječi abstract nakon specifikatora pristupa, npr.:

public abstract class Vozilo {}

Apstraktne klase se ne mogu instancirati. Pokušaj instanciranja`:

Vozilo m = new Vozilo();

dat će pogrešku kod kompilacije:

VoziloProba.java:5: Vozilo is abstract; cannot be instantiated
    Vozilo m = new Vozilo();
                     ^

Klasa Vozilo je zapravo tipičan primjer klase koja treba biti apstraktna. Ideja generičkog vozila nije realna. Realno je raditi s automobilima, kamionima, motociklima i ostalim objektima raznih podklasa od Vozilo, ali ne i sa objektima apstraktne klase.

Apstraktne klase imaju apstraktne metode.

Apstraktne metode

Apstraktna metoda ima deklaraciju, ali ne i implementaciju. Drugim riječima, nedostaje joj tijelo metode. Tijelo apstraktne metode se implementira u podklasama.

Apstraktna metoda može postojati jedino unutar apstraktne klase ili interfejsa.

Implementacija

Npr. apstraktna klasa Vozilo mogla bi imati apstraktnu metodu gorivo():

public abstract class Vozilo {

  public abstract void gorivo();

}

Potklase izvedene iz apstraktne klase, da bi mogle imati svojih instanci, moraju implementirati svaku deklarisanu metodu. Primjerice, klasa Kola bi metodu gorivo() mogla implementirati punjenjem spremnika benzinom. Klasa Kamion mogla bi je implementirati punjenjem spremnika diesel gorivom. Klasa ElektricnaKola bi je implementirati punjenjem električnom strujom.

Literatura

  • Elliotte Rusty Harold, Java Lecture Notes, preveo Draško Budin.
  • Programski jezik Java, Bilješke sa predavanja Muzafera Saračevića, Novi Pazar, 2015.