Java Interfaces Uitgelegd: Hoe Ze Te Definiëren en Implementeren met Praktische Voorbeelden
Wat Is Een Java Interface?
Java interface is een abstract type dat een contract definieert voor klassen. Het kan constanten en abstracte methodes declareren, maar kan geen state vasthouden. Alle methodes zijn impliciet public en abstract, en een klasse kan meerdere interfaces implementeren, wat de vereiste gedraging levert.
Een Interface Declareren
interface MijnInterface {
// abstracte methodes
}
Een Interface Implementeren
class Hond implements Huisdier {
// methodes van Huisdier implementeren
}
Interfaces Extenden
interface RijdendDier extends Dier, Voertuig {
// extra abstracte methodes
}
Waarom Interfaces Nodig Zijn?
Interfaces laten je het wat scheiden van het hoe. Ze maken polymorfisme mogelijk, bevorder losse koppeling en lossen het "meervoudige overerving" probleem op dat Java niet voor klassen ondersteunt.
Bijvoorbeeld, een MediaSpeler kan afzonderlijke CDSpeler en DVDSpeler subklassen hebben, elk met zijn eigen speel() implementatie. Als een klasse beide capaciteiten nodig had, zou Java meervoudige overerving van klassen verbieden, maar een interface laat ons de gedragingen netjes combineren.


Op dezelfde manier kan een Hond klasse Dier extenden en een Huisdier interface implementeren om zowel overervings- als contractuele verplichtingen te voldoen.

Java Interface Voorbeeld
Stap 1: Schrijf de volgende code:
interface Huisdier {
void test();
}
class Hond implements Huisdier {
@Override
public void test() {
System.out.println("Interface methode geïmplementeerd");
}
public static void main(String[] args) {
Huisdier p = new Hond();
p.test();
}
}
Stap 2: Compileer en voer het programma uit om de output te zien.
Klasse vs. Interface
| Klasse | Interface |
|---|---|
| Een klasse kan geïnstantieerd worden en mag state bevatten. | Een interface kan niet geïnstantieerd worden en bevat alleen constanten en methodehandtekeningen. |
| Kan concrete (geïmplementeerde) methodes hebben. | Voor Java 8, geen concrete methodes; vanaf Java 8 mogen default en static methodes. |
Toegangsmodifiers kunnen private, protected of public zijn. | Alle leden zijn impliciet public (en static final voor velden). |
Wanneer Een Interface vs. Een Abstracte Klasse Gebruiken?
- Abstracte Klasse: Gebruik wanneer je een gemeenschappelijke basisimplementatie of gedeelde state nodig hebt voor gerelateerde klassen.
- Interface: Gebruik wanneer je een rol of capaciteit wilt definiëren die door ongerelateerde klassen aangenomen kan worden.
Belangrijke Feiten Over Interfaces
- Een klasse kan meerdere interfaces implementeren, maar moet een implementatie bieden voor elke gedeclareerde methode.
- Interfaces kunnen niet direct geïnstantieerd worden; ze dienen als contracten.
- Interfacereferenties kunnen wijzen naar elke implementerende klasse.
- Een interface mag een of meer andere interfaces extenden.
- Geneste interfaces zijn toegestaan binnen andere interfaces of klassen.
- Twee interfaces mogen geen methodes declareren met dezelfde naam maar andere return types als een klasse beide implementeert.
- Vanaf Java 8 kunnen interfaces
defaultenstaticmethodes bevatten.
Samenvatting
- Interfaces definiëren een contract; klassen leveren de implementatie.
- Alle interfacemethodes zijn impliciet
publicenabstract(tenzijdefaultofstatic). - Interfaces kunnen niet geïnstantieerd worden maar kunnen gerefereerd worden door variabelen.
- Gebruik interfaces om polymorfisme te bereiken en Java's single inheritance beperking te omzeilen.
Java
- C# Abstracte Classes: Een Praktische Tutorial met Codevoorbeelden
- C# Interfaces Begrijpen: Definitie, Voorbeeld en Praktisch Gebruik
- Java interfaces meesteren: concepten, implementatie en best practices
- Java Hello World: Stap-voor-stap gids om je eerste Java-programma te schrijven
- Java String length() Methode: Hoe de grootte van een String op te vragen (Voorbeeld)
- Java String.charAt() begrijpen: Syntaxis, Retourtype, Exceptions en Praktisch Voorbeeld
- Java String.endsWith() beheersen: Controleren op String-suffixen met voorbeelden
- Interface vs Abstracte Klasse in Java: De Juiste Abstractie Kiezen
- Bestanden Lezen in Java met BufferedReader – Een Praktische Gids met Voorbeelden
- Insertion Sort algoritme in Java: Duidelijk voorbeeld & stapsgewijze handleiding
- Java Interfaces begrijpen: Definities, Gebruik en Best Practices