Abstrakti Luokka vs Rajapinta
Kumpi valita
Aiemmista 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 ymmärretää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äärittelyyn jainterfacerajapinnan määrittelyyn; - Periytymisen avainsana:
extendsabstraktin luokan periyttämiseen jaimplementsrajapinnan toteuttamiseen; - Aliluokkien nimet:
abstract class-luokan 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 keskustellaan myöhemmin tässä osiossa;- Metodit abstraktissa luokassa voivat olla millä tahansa näkyvyysmuuttujalla, kun taas rajapinnoissa sallitaan vain
public-näkyvyys.
Huomio
Voimme myös periä samanaikaisesti abstraktin luokan ja toteuttaa rajapinnan. Ensin käytetään avainsanaa
extendsja sittenimplements. Syntaksi näyttää tältä:class ClassName extends AbstractClass implements Interface {}
Yksinkertaistettuna, ajattele abstraktia luokkaa luokkana, joka tarjoaa joitakin toiminnallisuuksia ja asettaa tiettyjä sääntöjä, mutta jättää osan toteutuksesta aliluokille. Rajapinta taas on kuin tarkistuslista, jonka luokan on täytettävä, 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
Awesome!
Completion rate improved to 4.76
Abstrakti Luokka vs Rajapinta
Pyyhkäise näyttääksesi valikon
Kumpi valita
Aiemmista 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 ymmärretää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äärittelyyn jainterfacerajapinnan määrittelyyn; - Periytymisen avainsana:
extendsabstraktin luokan periyttämiseen jaimplementsrajapinnan toteuttamiseen; - Aliluokkien nimet:
abstract class-luokan 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 keskustellaan myöhemmin tässä osiossa;- Metodit abstraktissa luokassa voivat olla millä tahansa näkyvyysmuuttujalla, kun taas rajapinnoissa sallitaan vain
public-näkyvyys.
Huomio
Voimme myös periä samanaikaisesti abstraktin luokan ja toteuttaa rajapinnan. Ensin käytetään avainsanaa
extendsja sittenimplements. Syntaksi näyttää tältä:class ClassName extends AbstractClass implements Interface {}
Yksinkertaistettuna, ajattele abstraktia luokkaa luokkana, joka tarjoaa joitakin toiminnallisuuksia ja asettaa tiettyjä sääntöjä, mutta jättää osan toteutuksesta aliluokille. Rajapinta taas on kuin tarkistuslista, jonka luokan on täytettävä, eli se määrittelee mitä metodeja luokalla täytyy olla, mutta ei sisällä varsinaista koodia.
Kiitos palautteestasi!