Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| programmierung:klassen:interfaces [2024/09/15 19:32] – swe | programmierung:klassen:interfaces [2025/12/20 14:53] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ~~REVEAL~~ | + | # Interfaces |
| - | ====== | + | |
| - | ----> | + | |
| - | * Java Interfaces sind ein Schlüsselelement der objektorientierten Programmierung, | + | - Java Interfaces sind ein Schlüsselelement der objektorientierten |
| - | | + | |
| - | <---- | + | - Im Gegensatz zu Superklassen enthalten sie nie konkrete |
| - | ----> | + | |
| - | | + | |
| - | * Genau wie eine **abstrakte Superklasse** wird ein **Interface** nicht instanziiert, | + | |
| - | <---- | + | werden |
| - | ===== Unterschied zu Superklassen ===== | + | |
| - | ----> | + | |
| - | ==== Mehrfachvererbung ==== | + | |
| - | Im Gegensatz zu Klassen können Interfaces mehrfach implementiert werden, wodurch eine Flexibilität entsteht, die Superklassen nicht bieten. | + | |
| + | - Ein großer Vorteil von Interfaces ist die Möglichkeit der | ||
| + | Mehrfachvererbung, | ||
| + | ermöglicht. Sie werden verwendet, wenn verschiedene, | ||
| + | Klassen das gleiche Verhalten teilen sollen, ohne eine starre | ||
| + | Vererbungshierarchie aufzubauen. | ||
| + | - Genau wie eine **abstrakte Superklasse** wird ein **Interface** nicht | ||
| + | instanziiert, | ||
| + | mithilfe des `new` gebildet. Es gibt aber auch Unterschiede. | ||
| - | Superklassen sind ideal, wenn es um Code-Wiederverwendung geht, während Interfaces zur Definition von Verhalten verwendet werden. | ||
| - | <---- | ||
| - | ----> | ||
| - | ==== Methoden ==== | ||
| - | * Interfaces enthalten ganz sicher nur Methodensignaturen. | ||
| - | * Sie werden nicht im Interface, sondern in der Klasse ausbuchstabiert, | ||
| - | * Eine Superklasse enthält möglicherweise Implementierungen von Methoden. | ||
| - | <---- | ||
| - | ----> | ||
| - | ==== Attribute ==== | ||
| - | Ein Interface bringt nur Attribute mit folgenden Eigenschaften mit: | ||
| - | * '' | ||
| - | * '' | ||
| - | Die sonst üblichen Attribute müssen in der jeweiligen Klasse implementiert werden. | ||
| - | <---- | + | ## Unterschied zu Superklassen |
| - | ===== Verwendung ===== | + | |
| + | |||
| - | Interfaces verwenden das Schlüsselwort '' | + | ### Mehrfachvererbung |
| - | Eine Klasse, die das Interface | + | Im Gegensatz zu Klassen können Interfaces mehrfach |
| + | wodurch eine Flexibilität entsteht, die Superklassen nicht bieten. | ||
| + | Superklassen sind ideal, wenn es um Code-Wiederverwendung geht, während | ||
| + | Interfaces zur Definition von Verhalten verwendet werden. | ||
| - | ----> | + | ### Methoden |
| - | <code java [enable_line_numbers=" | + | |
| + | - Interfaces enthalten ganz sicher nur Methodensignaturen. | ||
| + | - Sie werden nicht im Interface, sondern in der Klasse ausbuchstabiert, | ||
| + | die das Interface implementiert. | ||
| + | - Eine Superklasse enthält möglicherweise Implementierungen von | ||
| + | Methoden. | ||
| + | |||
| + | |||
| + | |||
| + | ### Attribute | ||
| + | |||
| + | Ein Interface bringt nur Attribute mit folgenden Eigenschaften mit: | ||
| + | |||
| + | - | ||
| + | über alle Instanzen der Klasse hinweg | ||
| + | - `final`, d.h. das Attribut ist nicht veränderbar - sprich: es ist | ||
| + | eine KONSTANTE. | ||
| + | |||
| + | Die sonst üblichen Attribute müssen in der jeweiligen Klasse | ||
| + | implementiert werden. | ||
| + | |||
| + | |||
| + | |||
| + | ## Verwendung | ||
| + | |||
| + | Interfaces verwenden das Schlüsselwort `interface`. | ||
| + | |||
| + | Eine Klasse, die das Interface implementiert, | ||
| + | Schlüsselwort `implements`. | ||
| + | |||
| + | |||
| + | |||
| + | ``` java | ||
| // Definition des Interface | // Definition des Interface | ||
| public interface Saeugetier{ | public interface Saeugetier{ | ||
| Line 55: | Line 80: | ||
| } | } | ||
| - | </ | + | ``` |
| - | ----> | + | |
| - | Eine Klasse, die ein Interface implementiert verwendet - wer hätte es gedacht - das Schlüsselwort | + | Eine Klasse, die ein Interface implementiert verwendet - wer |
| - | <code java [enable_line_numbers=" | + | hätte es gedacht - das Schlüsselwort |
| + | |||
| + | ``` java | ||
| // Klasse Dog implementiert das Interface Saeugetier | // Klasse Dog implementiert das Interface Saeugetier | ||
| class Dog implements Saeugetier{ | class Dog implements Saeugetier{ | ||
| Line 69: | Line 96: | ||
| } | } | ||
| } | } | ||
| - | </ | + | ``` |
| - | ----> | + | |
| - | Und noch eine Klasse, die das Interface mithilfe des Schlüsselworts | + | Und noch eine Klasse, die das Interface mithilfe des |
| - | <code java [enable_line_numbers=" | + | Schlüsselworts |
| + | |||
| + | ``` java | ||
| // Klasse Cat implementiert ebenfalls das Interface Saeugetier | // Klasse Cat implementiert ebenfalls das Interface Saeugetier | ||
| class Cat implements Saeugetier{ | class Cat implements Saeugetier{ | ||
| Line 83: | Line 112: | ||
| } | } | ||
| } | } | ||
| - | </code> | + | ``` |
| + | |||
| + | ## UML | ||
| + | |||
| + | ![interfaceuml.svg](/programmierung/ | ||