---
title: 'Inselupdate: Wie wo was dynamisch binden'
url: 'https://www.tutego.de/blog/javainsel/2014/11/inselupdate-wie-wo-was-dynamisch-binden'
markdown: 'https://www.tutego.de/blog/javainsel/2014/11/inselupdate-wie-wo-was-dynamisch-binden.md'
date: '2014-11-07'
description: 'Es gibt bei Methoden von konkreten Klasse, abstrakte Klassen und Schnittstellen Unterschiede, wo der Aufruf letztendlich landet. Nehmen wir folgende Methode an: void f( T t ) { t.m(); } Fordert die Methode ein Argument vom Typ T und ruft auf dem Parameter t die Methode m() auf, so können wir folge…'
taxonomy:
  category:
    - Insel
---

# Inselupdate: Wie wo was dynamisch binden

![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: Wie wo was dynamisch binden

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

Es gibt bei Methoden von konkreten Klasse, abstrakte Klassen und Schnittstellen Unterschiede, wo der Aufruf letztendlich landet. Nehmen wir folgende Methode an:

```java
void f( T t ) {
 t.m();
}
```

Fordert die Methode ein Argument vom Typ T und ruft auf dem Parameter t die Methode `m()` auf, so können wir folgendes festhalten:

- Ist T eine finale Klasse, so wird immer die Methode `m()` von T aufgerufen, da es keine Unterklassen geben kann, die `m()` überschreiben.
- Ist T eine nicht-finale Klasse und `m()` eine finale Methode, wird genau `m()` aufgerufen, weil kein Unterklasse `m()` überschreiben kann.
- Ist T eine nicht-finale Klasse und `m()` keine finale Methode, so könnten Unterklassen von T `m()` überschreiben und `t.m()` würde dann dynamisch die überschriebene Methode aufrufen.
- Ist T eine abstrakte Klasse und `m()` eine abstrakte Methode, so wird in jedem Fall eine Realisierung von `m()` in einer Unterklasse aufgerufen.
- Ist T eine Schnittstelle, und `m()` keine Default-Implementierung, so wird in jedem Fall eine Implementierung `m()` einer implementierenden Klasse aufgerufen.
- Ist T eine Schnittstelle, und `m()` eine Default-Implementierung, so kann `t.m()` bei der Default-Implementierung landen, oder bei einer überschriebenen Version einer implementierenden Klasse.

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/)

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

---

## Navigation

- Previous: [GWT 2.7 RC 1](https://www.tutego.de/blog/javainsel/2014/11/gwt-2-7-rc-1.md)
- Next: [Turtle-Grafik](https://www.tutego.de/blog/javainsel/2014/11/turtle-grafik.md)
