Kurssisisältö
Java OOP
Java OOP
Abstrakti Luokka vs Rajapinta
Kumpi valita?
Edellisistä luvuista olet ehkä huomannut, että abstract classes
ja interfaces
ovat melko samanlaisia. Niiden välillä on kuitenkin eroja. Ytimekkäästi voidaan todeta, että käytännössä rajapintoja suositaan usein abstraktien luokkien sijaan. Mutta selvitetään, miksi näin on.
Mikä on ero?
Aluksi meidän täytyy ymmärtää abstraktin luokan ja rajapinnan erot. Käydään lista läpi:
Syntaksi:
abstract class
abstraktin luokan määrittelyssä jainterface
rajapinnan määrittelyssä;Periytymisen avainsana:
extends
abstraktin luokan periyttämisessä jaimplements
rajapinnan toteuttamisessa;Aliluokkien nimet:
abstract class
-aliluokkaa kutsutaan aliluokaksi tai periväksi luokaksi, kun taasinterface
-aliluokkaa kutsutaan luokaksi - toteutus;Periytymisten määrä: Voit periä vain yhden abstraktin luokan, mutta voit toteuttaa useita rajapintoja;
abstract class
voi sisältää sekä toteutettuja että abstrakteja metodeja. Java 8:sta alkaen rajapinnat voivat sisältää myösdefault
-metodeja, joista keskustelemme myöhemmin tässä osiossa;Metodit abstraktissa luokassa voivat käyttää mitä tahansa näkyvyysmäärettä, kun taas rajapinnoissa sallitaan vain
public
-näkyvyys.
Huomio
Voimme myös samanaikaisesti periä abstraktin luokan ja toteuttaa rajapinnan. Ensin käytetään avainsanaa
extends
ja sen jälkeenimplements
. Syntaksi näyttää tältä:class ClassName extends AbstractClass implements Interface {}
Yksinkertaistettuna voit ajatella abstraktia luokkaa luokkana, joka tarjoaa joitakin toiminnallisuuksia ja asettaa tiettyjä sääntöjä, mutta jättää osan toteutuksesta aliluokilleen. Rajapinta taas on kuin tarkistuslista, joka luokan täytyy täyttää, eli se määrittelee mitä metodeja luokalla täytyy olla, mutta ei sisällä varsinaista koodia.
Kiitos palautteestasi!