Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Mikä on rajapinta? | Rajapinta
Java OOP

bookMikä on rajapinta?

Entä jos meidän täytyy periä useammasta kuin yhdestä luokasta? Java mahdollistaa tämän rajapintojen avulla. Nimestään huolimatta rajapinta muistuttaa hyvin paljon abstraktia luokkaa. Tarkastellaanpa rajapinnan määrittelyä:

Yksinkertaisesti sanottuna rajapintaa käytetään määrittelemään metodit, jotka luokka toteuttaa. Rajapinnoilla on oma erityinen syntaksinsa. Kun loimme luokan, käytimme "public class className { }", mutta rajapinnan luomisen syntaksi näyttää erilaiselta:

InterfaceExample.java

InterfaceExample.java

copy
123456
package com.example; public interface InterfaceExample { void methodName(); String methodThatAcceptsAndReturnsString(String parameter); }
  1. Kiinnitä huomiota metodin määrittelyyn;
  2. Emme käytä pääsynmäärittelijöitä;
  3. Emme anna metodirunkoja;
  4. Ei tarvitse merkitä metodeja abstract-avainsanalla, koska työskentelemme rajapinnan sisällä;
  5. Emme luo kenttiä rajapintoihin.

Tarkastellaan Interface-rajapinnan käyttöä esimerkkinä mediasoittimesta. Meillä on Interface nimeltä MediaPlayer, jossa on metodit play, pause ja stop. Lisäksi on kaksi luokkaa, jotka toteuttavat tämän mediasoitinrajapinnan, nimittäin AudioPlayer ja VideoPlayer.

MediaPlayer.java

MediaPlayer.java

AudioPlayer.java

AudioPlayer.java

VideoPlayer.java

VideoPlayer.java

copy
12345
public interface MediaPlayer { void play(); void pause(); void stop(); }

Kuten huomaat, loimme interface-rajapinnan ja kaksi luokkaa, jotka toteuttavat tämän rajapinnan. Syntaksi on sama kuin abstraktien metodien ylikirjoittamisessa. Olemme ylikirjoittaneet jokaisen metodin jokaisessa luokassa niin, että ne suorittavat oman erityisen toimintonsa.

Yksi rajapintojen ominaisuuksista on, että voimme toteuttaa useamman kuin yhden rajapinnan. Tarkastellaan esimerkkiä:

Vehicle.java

Vehicle.java

VehicleInfo.java

VehicleInfo.java

Car.java

Car.java

copy
123456
package vehicle; interface Vehicle { void startEngine(); void stopEngine(); }

Olemme luoneet rajapinnat Vehicle ja VehicleInfo. Lisäksi olemme luoneet luokan Car, joka toteuttaa molemmat nämä rajapinnat. Näin voimme valita mitä toiminnallisuuksia luokassa toteutetaan, mikä tukee hyvin olio-ohjelmoinnin abstraktion periaatetta. Rajapintojen kanssa työskentely on erittäin kätevää, ja niitä käytetään laajasti. Seuraavassa luvussa tarkastelemme myös rajapinnan ja abstraktin luokan tärkeimpiä eroja sekä opimme, kumpaa kannattaa käyttää käytännössä!

1. Mikä on rajapinta (interface) Javassa?

2. Voiko luokka toteuttaa useita rajapintoja Javassa?

3. Mikä on rajapinnan tarkoitus Javassa?

4. Mitä avainsanaa käytetään rajapinnan toteuttamiseen luokassa?

5. Mitä tapahtuu, jos luokka väittää toteuttavansa rajapinnan, mutta ei tarjoa toteutuksia kaikille sen metodeille?

question mark

Mikä on rajapinta (interface) Javassa?

Select the correct answer

question mark

Voiko luokka toteuttaa useita rajapintoja Javassa?

Select the correct answer

question mark

Mikä on rajapinnan tarkoitus Javassa?

Select the correct answer

question mark

Mitä avainsanaa käytetään rajapinnan toteuttamiseen luokassa?

Select the correct answer

question mark

Mitä tapahtuu, jos luokka väittää toteuttavansa rajapinnan, mutta ei tarjoa toteutuksia kaikille sen metodeille?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you show me an example of how to declare an interface in Java?

What is the difference between an interface and an abstract class?

How do you implement multiple interfaces in a single class?

Awesome!

Completion rate improved to 4.76

bookMikä on rajapinta?

Pyyhkäise näyttääksesi valikon

Entä jos meidän täytyy periä useammasta kuin yhdestä luokasta? Java mahdollistaa tämän rajapintojen avulla. Nimestään huolimatta rajapinta muistuttaa hyvin paljon abstraktia luokkaa. Tarkastellaanpa rajapinnan määrittelyä:

Yksinkertaisesti sanottuna rajapintaa käytetään määrittelemään metodit, jotka luokka toteuttaa. Rajapinnoilla on oma erityinen syntaksinsa. Kun loimme luokan, käytimme "public class className { }", mutta rajapinnan luomisen syntaksi näyttää erilaiselta:

InterfaceExample.java

InterfaceExample.java

copy
123456
package com.example; public interface InterfaceExample { void methodName(); String methodThatAcceptsAndReturnsString(String parameter); }
  1. Kiinnitä huomiota metodin määrittelyyn;
  2. Emme käytä pääsynmäärittelijöitä;
  3. Emme anna metodirunkoja;
  4. Ei tarvitse merkitä metodeja abstract-avainsanalla, koska työskentelemme rajapinnan sisällä;
  5. Emme luo kenttiä rajapintoihin.

Tarkastellaan Interface-rajapinnan käyttöä esimerkkinä mediasoittimesta. Meillä on Interface nimeltä MediaPlayer, jossa on metodit play, pause ja stop. Lisäksi on kaksi luokkaa, jotka toteuttavat tämän mediasoitinrajapinnan, nimittäin AudioPlayer ja VideoPlayer.

MediaPlayer.java

MediaPlayer.java

AudioPlayer.java

AudioPlayer.java

VideoPlayer.java

VideoPlayer.java

copy
12345
public interface MediaPlayer { void play(); void pause(); void stop(); }

Kuten huomaat, loimme interface-rajapinnan ja kaksi luokkaa, jotka toteuttavat tämän rajapinnan. Syntaksi on sama kuin abstraktien metodien ylikirjoittamisessa. Olemme ylikirjoittaneet jokaisen metodin jokaisessa luokassa niin, että ne suorittavat oman erityisen toimintonsa.

Yksi rajapintojen ominaisuuksista on, että voimme toteuttaa useamman kuin yhden rajapinnan. Tarkastellaan esimerkkiä:

Vehicle.java

Vehicle.java

VehicleInfo.java

VehicleInfo.java

Car.java

Car.java

copy
123456
package vehicle; interface Vehicle { void startEngine(); void stopEngine(); }

Olemme luoneet rajapinnat Vehicle ja VehicleInfo. Lisäksi olemme luoneet luokan Car, joka toteuttaa molemmat nämä rajapinnat. Näin voimme valita mitä toiminnallisuuksia luokassa toteutetaan, mikä tukee hyvin olio-ohjelmoinnin abstraktion periaatetta. Rajapintojen kanssa työskentely on erittäin kätevää, ja niitä käytetään laajasti. Seuraavassa luvussa tarkastelemme myös rajapinnan ja abstraktin luokan tärkeimpiä eroja sekä opimme, kumpaa kannattaa käyttää käytännössä!

1. Mikä on rajapinta (interface) Javassa?

2. Voiko luokka toteuttaa useita rajapintoja Javassa?

3. Mikä on rajapinnan tarkoitus Javassa?

4. Mitä avainsanaa käytetään rajapinnan toteuttamiseen luokassa?

5. Mitä tapahtuu, jos luokka väittää toteuttavansa rajapinnan, mutta ei tarjoa toteutuksia kaikille sen metodeille?

question mark

Mikä on rajapinta (interface) Javassa?

Select the correct answer

question mark

Voiko luokka toteuttaa useita rajapintoja Javassa?

Select the correct answer

question mark

Mikä on rajapinnan tarkoitus Javassa?

Select the correct answer

question mark

Mitä avainsanaa käytetään rajapinnan toteuttamiseen luokassa?

Select the correct answer

question mark

Mitä tapahtuu, jos luokka väittää toteuttavansa rajapinnan, mutta ei tarjoa toteutuksia kaikille sen metodeille?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 1
some-alt