Mikä 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 syntaksinsa. Kun loimme luokan, käytimme "public class className { }", mutta rajapinnan luomisen syntaksi näyttää erilaiselta:
InterfaceExample.java
123456package com.example; public interface InterfaceExample { void methodName(); String methodThatAcceptsAndReturnsString(String parameter); }
- Kiinnitä huomiota metodin määrittelyyn;
- Pääsynmääreitä ei käytetä;
- Metodirunkoja ei anneta;
- Ei tarvitse merkitä metodeja abstract-avainsanalla, koska ollaan rajapinnassa;
- Kenttiä ei luoda rajapintoihin.
Tarkastellaan Interface-rajapinnan käyttöä esimerkin avulla, jossa on mediasoitin.
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
AudioPlayer.java
VideoPlayer.java
12345public 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. Tarkastellaanpa esimerkkiä:
Vehicle.java
VehicleInfo.java
Car.java
123456package 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 mitkä toiminnot toteutetaan luokassa, 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 pääasiallisia eroja sekä opimme, kumpi niistä on käytännössä parempi valinta!
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?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme