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
course content

Kurssisisältö

Java OOP

Java OOP

1. Kuinka Työskennellä IDE:n Kanssa?
2. OOP
3. Rajapinta

book
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ä ja interface rajapinnan määrittelyssä;

  • Periytymisen avainsana: extends abstraktin luokan periyttämisessä ja implements rajapinnan toteuttamisessa;

  • Aliluokkien nimet: abstract class-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 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älkeen implements. 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.

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

course content

Kurssisisältö

Java OOP

Java OOP

1. Kuinka Työskennellä IDE:n Kanssa?
2. OOP
3. Rajapinta

book
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ä ja interface rajapinnan määrittelyssä;

  • Periytymisen avainsana: extends abstraktin luokan periyttämisessä ja implements rajapinnan toteuttamisessa;

  • Aliluokkien nimet: abstract class-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 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älkeen implements. 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.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 3
some-alt