v4.x/Interfaces: Unterschied zwischen den Versionen
Mike (Diskussion | Beiträge) K (→Interfaces) |
Mike (Diskussion | Beiträge) K (→Interfaces) |
||
Zeile 1: | Zeile 1: | ||
== Interfaces == | == Interfaces == | ||
− | |||
− | |||
Ein Interface gleicht im Prinzip einer Super-Klasse, von der man erben kann. Der Unterschied zur Super-Klasse besteht darin, dass - vereinfacht gesagt - bei einem Interface nur Methoden vererbt werden wohingegen eine Super-Klasse auch Attribute vererben kann. Bei Super-Klassen erbt man mit dem Schlüsselwort <code>extends</code> wohingegen man von einem Interface mit dem Schlüsselwort '''<code>implements</code>''' erbt. Sehr oft sind die Methoden eines Interfaces nur Signaturen, das heißt Methoden-Köpfe ohne Rumpf. Der Rumpf wird erst in der Sub-Klasse implementiert. Man spricht dann von '''überschreiben der Methode'''. Meist gibt ein Interface eine Funktionalität vor und in der Sub-Klasse kann man frei entscheiden, wie auf diese Funktionalität konkret reagiert werden kann. | Ein Interface gleicht im Prinzip einer Super-Klasse, von der man erben kann. Der Unterschied zur Super-Klasse besteht darin, dass - vereinfacht gesagt - bei einem Interface nur Methoden vererbt werden wohingegen eine Super-Klasse auch Attribute vererben kann. Bei Super-Klassen erbt man mit dem Schlüsselwort <code>extends</code> wohingegen man von einem Interface mit dem Schlüsselwort '''<code>implements</code>''' erbt. Sehr oft sind die Methoden eines Interfaces nur Signaturen, das heißt Methoden-Köpfe ohne Rumpf. Der Rumpf wird erst in der Sub-Klasse implementiert. Man spricht dann von '''überschreiben der Methode'''. Meist gibt ein Interface eine Funktionalität vor und in der Sub-Klasse kann man frei entscheiden, wie auf diese Funktionalität konkret reagiert werden kann. | ||
Zeile 7: | Zeile 5: | ||
In der Edu-Variante der Engine-Alpha gibt es | In der Edu-Variante der Engine-Alpha gibt es | ||
− | * das '''Interface <code>TastenReagierbar</code>''' mit den '''Methoden < | + | [[Datei:Interfaces.png|mini|Interfaces der Edu Variante]] |
+ | |||
+ | * das '''Interface <code>TastenReagierbar</code>''' mit den '''Methoden <br> | ||
+ | <source lang="Java">public void tasteReagieren( int taste )</source> | ||
+ | <source lang="Java">public void tasteLosgelassenReagieren( int taste )</source> | ||
+ | <source lang="Java">public boolean istTasteGedrueckt( int taste )</source>''' | ||
− | * das '''Interface <code>Ticker</code>''' mit der '''Methode < | + | * das '''Interface <code>Ticker</code>''' mit der '''Methode |
+ | <source lang="Java">public void tick()</source>''' | ||
− | * das '''Interface <code>MausklickReagierbar</code>''' mit den '''Methoden < | + | * das '''Interface <code>MausklickReagierbar</code>''' mit den '''Methoden |
+ | <source lang="Java">public void klickReagieren( double x , double y )</source> | ||
+ | <source lang="Java">public void klickLosgelassenReagieren( double x , double y )</source>''' | ||
− | * das '''Interface <code>MausradReagierbar</code>''' mit der '''Methode < | + | * das '''Interface <code>MausradReagierbar</code>''' mit der '''Methode |
+ | <source lang="Java">public void tasteReagieren( int zaehler )</source>''' | ||
− | * das '''Interface <code>BildAktualisierungReagierbar</code>''' mit der '''Methode < | + | * das '''Interface <code>BildAktualisierungReagierbar</code>''' mit der '''Methode |
+ | <source lang="Java">public void bildAktualisierungReagieren( double zeitIntervall )</source>''' | ||
− | * das '''Interface <code>KollisionsReagierbar</code>''' mit der ''' | + | * das '''Interface <code>KollisionsReagierbar</code>''' mit der '''Methode |
+ | <source lang="Java">public boolean kollisionReagieren( EduActor ea )</source>''' | ||
− | Die meisten dieser Methoden sind in der Klasse <code>SPIEL</code> bereits vorhanden und du kannst sie in Sub-Klassen von <code>SPIEL</code> überschreiben. <br> Manchmal möchte man aber ohne <code>SPIEL</code> auskommen oder hat darüber hinausgehende Bedürfnisse. Dann sind diese Interfaces sehr nützlich. | + | '''Die meisten dieser Methoden sind in der Klasse <code>SPIEL</code> bereits vorhanden''' und du kannst sie in Sub-Klassen von <code>SPIEL</code> überschreiben. <br> Manchmal möchte man aber ohne <code>SPIEL</code> auskommen oder hat darüber hinausgehende Bedürfnisse. Dann sind diese Interfaces sehr nützlich. |
Version vom 11. Juni 2023, 12:32 Uhr
Interfaces
Ein Interface gleicht im Prinzip einer Super-Klasse, von der man erben kann. Der Unterschied zur Super-Klasse besteht darin, dass - vereinfacht gesagt - bei einem Interface nur Methoden vererbt werden wohingegen eine Super-Klasse auch Attribute vererben kann. Bei Super-Klassen erbt man mit dem Schlüsselwort extends
wohingegen man von einem Interface mit dem Schlüsselwort implements
erbt. Sehr oft sind die Methoden eines Interfaces nur Signaturen, das heißt Methoden-Köpfe ohne Rumpf. Der Rumpf wird erst in der Sub-Klasse implementiert. Man spricht dann von überschreiben der Methode. Meist gibt ein Interface eine Funktionalität vor und in der Sub-Klasse kann man frei entscheiden, wie auf diese Funktionalität konkret reagiert werden kann.
In der Edu-Variante der Engine-Alpha gibt es
- das Interface
TastenReagierbar
mit den Methoden
public void tasteReagieren( int taste )
public void tasteLosgelassenReagieren( int taste )
public boolean istTasteGedrueckt( int taste )
- das Interface
Ticker
mit der Methode
public void tick()
- das Interface
MausklickReagierbar
mit den Methoden
public void klickReagieren( double x , double y )
public void klickLosgelassenReagieren( double x , double y )
- das Interface
MausradReagierbar
mit der Methode
public void tasteReagieren( int zaehler )
- das Interface
BildAktualisierungReagierbar
mit der Methode
public void bildAktualisierungReagieren( double zeitIntervall )
- das Interface
KollisionsReagierbar
mit der Methode
public boolean kollisionReagieren( EduActor ea )
Die meisten dieser Methoden sind in der Klasse SPIEL
bereits vorhanden und du kannst sie in Sub-Klassen von SPIEL
überschreiben.
Manchmal möchte man aber ohne SPIEL
auskommen oder hat darüber hinausgehende Bedürfnisse. Dann sind diese Interfaces sehr nützlich.