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 ymmärretään, miksi näin on.
Mikä on ero
Aluksi on tärkeää 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 periytymiseen jaimplementsrajapinnan toteuttamiseen; - 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 keskustellaan myöhemmin tässä osiossa;- Metodit abstraktissa luokassa voivat käyttää mitä tahansa näkyvyysmuutinta, 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 sen jälkeenimplements. 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 aliluokilleen. 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