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 classabstraktin luokan määrittelyssä jainterfacerajapinnan määrittelyssä; - Periytymisen avainsana:
extendsabstraktin luokan periyttämisessä jaimplementsrajapinnan 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 classvoi 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
extendsja 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!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Kysy minulta kysymyksiä tästä aiheesta
Tiivistä tämä luku
Näytä käytännön esimerkkejä
Awesome!
Completion rate improved to 4.76
Abstrakti Luokka vs Rajapinta
Pyyhkäise näyttääksesi valikon
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 classabstraktin luokan määrittelyssä jainterfacerajapinnan määrittelyssä; - Periytymisen avainsana:
extendsabstraktin luokan periyttämisessä jaimplementsrajapinnan 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 classvoi 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
extendsja 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!