Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
programmierung:klassen:interfaces [2024/09/15 19:57] sweprogrammierung:klassen:interfaces [2025/12/20 14:53] (current) – external edit 127.0.0.1
Line 1: Line 1:
-~~REVEAL~~ +Interfaces
-====== Interfaces ======+
  
----->+ 
  
-  * Java Interfaces sind ein Schlüsselelement der objektorientierten Programmierung, um Abstraktion zu ermöglichen.  +Java Interfaces sind ein Schlüsselelement der objektorientierten 
-  Im Gegensatz zu Superklassen enthalten sie nie konkrete Implementierungen, sondern definieren nur das zu implementierende Verhalten. Definieren heißt hier, dass nur eine Methode erwähnt wird, die dann von der konkreten Klasse **in jedem Fall** implementiert werden muss. +  Programmierung, um Abstraktion zu ermöglichen. 
-<---- +Im Gegensatz zu Superklassen enthalten sie nie konkrete 
-----> +  Implementierungen, sondern definieren nur das zu implementierende 
-  * Ein großer Vorteil von Interfaces ist die Möglichkeit der Mehrfachvererbung, was Flexibilität in der Gestaltung des Programms ermöglicht. Sie werden verwendet, wenn verschiedene, nicht verwandte Klassen das gleiche Verhalten teilen sollen, ohne eine starre Vererbungshierarchie aufzubauen. +  Verhalten. Definieren heißt hier, dass nur eine Methode erwähnt wird, 
-  * Genau wie eine **abstrakte Superklasse** wird ein **Interface** nicht instanziiert, d.h. es wird kein Objekt direkt aus einem Interface mithilfe des ''new'' gebildet. Es gibt aber auch Unterschiede.  +  die dann von der konkreten Klasse **in jedem Fall** implementiert 
-<---- +  werden muss.
-===== 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, was Flexibilität in der Gestaltung des Programms
 +  ermöglicht. Sie werden verwendet, wenn verschiedene, nicht verwandte
 +  Klassen das gleiche Verhalten teilen sollen, ohne eine starre
 +  Vererbungshierarchie aufzubauen.
 +- Genau wie eine **abstrakte Superklasse** wird ein **Interface** nicht
 +  instanziiert, d.h. es wird kein Objekt direkt aus einem Interface
 +  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, die das Interface implementiert. 
-  * Eine Superklasse enthält möglicherweise Implementierungen von Methoden. 
-<---- 
-----> 
-==== Attribute ==== 
-Ein Interface bringt nur Attribute mit folgenden Eigenschaften mit: 
-  *  ''static'', d.h. das Attribut ist eine sog. Klassenvariable und gilt ü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. 
  
-<---- +## Unterschied zu Superklassen
-===== Verwendung =====+
  
 + 
  
-Interfaces verwenden das Schlüsselwort ''interface''+### Mehrfachvererbung
  
-Eine Klasse, die das Interface implementiert, verwendet das Schlüsselwort ''implements''.+Im Gegensatz zu Klassen können Interfaces mehrfach implementiert werden, 
 +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="true"start_line_numbers_at="1", highlight_lines_extra="0" Saeugetier.java>+ 
 +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: 
 + 
 + `static`, d.h. das Attribut ist eine sog. Klassenvariable und gilt 
 +  ü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, verwendet das 
 +Schlüsselwort `implements`. 
 + 
 +  
 + 
 +``` java
 // Definition des Interface // Definition des Interface
 public interface Saeugetier{ public interface Saeugetier{
Line 55: Line 80:
 } }
  
-</code> +``` 
-----> + 
-Eine Klasse, die ein Interface implementiert verwendet - wer hätte es gedacht - das Schlüsselwort ''implements''+  Eine Klasse, die ein Interface implementiert verwendet - wer 
-<code java [enable_line_numbers="true", start_line_numbers_at="1", highlight_lines_extra="0" Dog.java>+hätte es gedacht - das Schlüsselwort `implements`
 + 
 +``` 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:
     }     }
 } }
-</code> +``` 
-----> + 
-Und noch eine Klasse, die das Interface mithilfe des Schlüsselworts ''implements'' implementiert. +  Und noch eine Klasse, die das Interface mithilfe des 
-<code java [enable_line_numbers="true", start_line_numbers_at="1", highlight_lines_extra="0" Cat.java>+Schlüsselworts `implementsimplementiert. 
 + 
 +``` 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
  
-===== UML ===== +![interfaceuml.svg](/programmierung/klassen/interfaceuml.svg){.align-center}
-{{ :programmierung:klassen:interfaceuml.svg |}}+