Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Abstrakti Luokka vs Rajapinta | Rajapinta
Java OOP

bookAbstrakti 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 class abstraktin luokan määrittelyyn ja interface rajapinnan määrittelyyn;
  • Periytymisen avainsana: extends abstraktin luokan periyttämiseen ja implements rajapinnan toteuttamiseen;
  • Aliluokkien nimet: abstract class-luokan aliluokkaa kutsutaan aliluokaksi tai periväksi luokaksi, kun taas interface-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ös default-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 extends ja sitten implements. 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.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 4.76

bookAbstrakti 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 class abstraktin luokan määrittelyyn ja interface rajapinnan määrittelyyn;
  • Periytymisen avainsana: extends abstraktin luokan periyttämiseen ja implements rajapinnan toteuttamiseen;
  • Aliluokkien nimet: abstract class-luokan aliluokkaa kutsutaan aliluokaksi tai periväksi luokaksi, kun taas interface-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ös default-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 extends ja sitten implements. 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.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 3
some-alt