v4.x/Interfaces: Unterschied zwischen den Versionen
Mike (Diskussion | Beiträge) K (→Interfaces) |
Mike (Diskussion | Beiträge) K (→Interfaces) |
||
Zeile 3: | Zeile 3: | ||
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. | ||
− | In der Edu-Variante der Engine-Alpha gibt es | + | In der Edu-Variante der Engine-Alpha gibt es 6 Interfaces: |
[[Datei:Interfaces.png|mini|Interfaces der Edu Variante]] | [[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 tasteReagieren( int taste )</source> | ||
<source lang="Java">public void tasteLosgelassenReagieren( int taste )</source> | <source lang="Java">public void tasteLosgelassenReagieren( int taste )</source> | ||
<source lang="Java">public boolean istTasteGedrueckt( int taste )</source>''' | <source lang="Java">public boolean istTasteGedrueckt( int taste )</source>''' | ||
− | * | + | * Das '''Interface <code>Ticker</code>''' mit der '''Methode |
<source lang="Java">public void tick()</source>''' | <source lang="Java">public void tick()</source>''' | ||
− | * | + | * Das '''Interface <code>MausklickReagierbar</code>''' mit den '''Methoden |
<source lang="Java">public void klickReagieren( double x , double y )</source> | <source lang="Java">public void klickReagieren( double x , double y )</source> | ||
<source lang="Java">public void klickLosgelassenReagieren( double x , double y )</source>''' | <source lang="Java">public void klickLosgelassenReagieren( double x , double y )</source>''' | ||
− | * | + | * Das '''Interface <code>MausradReagierbar</code>''' mit der '''Methode |
<source lang="Java">public void tasteReagieren( int zaehler )</source>''' | <source lang="Java">public void tasteReagieren( int zaehler )</source>''' | ||
− | * | + | * Das '''Interface <code>BildAktualisierungReagierbar</code>''' mit der '''Methode |
<source lang="Java">public void bildAktualisierungReagieren( double zeitIntervall )</source>''' | <source lang="Java">public void bildAktualisierungReagieren( double zeitIntervall )</source>''' | ||
− | * | + | * Das '''Interface <code>KollisionsReagierbar</code>''' mit der '''Methode |
<source lang="Java">public boolean kollisionReagieren( EduActor ea )</source>''' | <source lang="Java">public boolean kollisionReagieren( EduActor ea )</source>''' | ||
Version vom 11. Juni 2023, 12:44 Uhr
Inhaltsverzeichnis
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 6 Interfaces:
- 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 Methoden werden bei den entsprechenden Ereignissen automatisch aufgerufen. Die enthaltenen Parameter werden automatisch übergeben und können dann im Rumpf der überschriebenen Methode abgefragt werden.
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.
Demo 1: Interface TastenReagierbar
... bald ...
Demo 2: Interface Ticker
... bald ...
Demo 3: Interface MausKlickReagierbar
... bald ...
Demo 4: Interface MausRadReagierbar
... bald ...
Demo 5: Interface BildAktualisierungReagierbar
... bald ...
Demo 6: Interface KollisionsReagierbar
... bald ...