---
title: 'Inselupdate: Records implementieren Schnittstellen'
url: 'https://www.tutego.de/blog/javainsel/2023/08/inselupdate-records-implementieren-schnittstellen'
markdown: 'https://www.tutego.de/blog/javainsel/2023/08/inselupdate-records-implementieren-schnittstellen.md'
date: '2023-08-26'
description: 'Obwohl Records keine Klassen erweitern können, können sie Schnittstellen implementieren. Dies ermöglicht uns, Abstraktionen zu erstellen, was nützlich ist, um gemeinsame Record-Komponenten zu teilen. Betrachten wir ein Beispiel. Wir wollen den Basistyp Event nicht mehr als abstrakte Oberklasse dekl…'
taxonomy:
  category:
    - Insel
    - 'Java 21'
---

# Inselupdate: Records implementieren Schnittstellen

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Inselupdate: Records implementieren Schnittstellen

26.08.2023 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Obwohl Records keine Klassen erweitern können, können sie Schnittstellen implementieren. Dies ermöglicht uns, Abstraktionen zu erstellen, was nützlich ist, um gemeinsame Record-Komponenten zu teilen.

Betrachten wir ein Beispiel. Wir wollen den Basistyp `Event` nicht mehr als abstrakte Oberklasse deklarieren, sondern als Schnittstelle:

```java
interface Event {

  String about();

  int duration();

}
```

Das erlaubt es uns, zwei Records zu deklarieren, die die `Event`-Schnittstelle implementieren:

```java
record Nap( String about, int duration ) implements Event {}

record Workout( String about, int duration, int caloriesBurned ) implements Event {}
```

Der clevere Teil dabei ist, dass die Records bereits die Zugriffsmethoden `String` `about()` und int `duration()` besitzen, sodass keine zusätzliche Implementierung erforderlich ist.

Mit dieser Typbeziehung können wir Folgendes tun:

```java
Event event = new Nap( "Snooze Olympics", 69 );

System.out.println( event.about() );

System.out.println( event.duration() );
```

In diesem Fall ist der Referenztyp `Event` und der Objekttyp `Nap`. Mit dieser Abstraktion lässt sich perfekt Pattern-Matching und Record-Pattern einsetzen:

```java
switch ( event ) {

  case Nap nap ->

      System.out.printf( "%d minutes of ninja-level rest!%n", nap.duration );

  case Workout( var about, var duration, var calories ) ->

      System.out.printf("You just burned %d calories for a guilt-free gummy bear.%n", calories );

  default -> {}

}
```

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/), [Java 21](https://www.tutego.de/blog/javainsel/category/java-21/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Inselupdate: Record-Patterns in Java 21](https://www.tutego.de/blog/javainsel/2023/08/record-patterns-in-java-21.md)
- Next: [Inselupdate: Neue Math Methoden clamp(...)](https://www.tutego.de/blog/javainsel/2023/08/neue-math-methode-clamp.md)
