Dieses Wiki, das alte(!) Projektwiki (projektwiki.zum.de)
wird demnächst gelöscht.
Bitte sichere Deine Inhalte zeitnah,
wenn Du sie weiter verwenden möchtest.
Gerne kannst Du natürlich weiterarbeiten
im neuen Projektwiki (projekte.zum.de).Vererbung - Interface: Unterschied zwischen den Versionen
Zeile 1: | Zeile 1: | ||
− | + | Vererbung dient zur Generalisierung von Klassen. Dabei werden in der Oberklasse Attribute und Methoden festgelegt, die von den Unterklassen übernommen werden. In diesen können weitere Attribute und Methoden ergänzt werden bzw. bestehende überschrieben werden können. | |
− | + | Bei Interfaces werden nur Methodenköpfe festgelegt, die von den Unterklassen übernommen werden müssen. Dabei kann eine Unterklasse mehrere Interfaces und zusätzlich eine Vererbung nutzen. | |
− | + | ||
− | + | ||
− | + | ||
− | |||
− | == | + | == Vererbung == |
− | + | Vererbung ist nötig, um Klassen zu generalisieren. In der Oberklasse werden Attribute und Methoden festgelegt, die bei allen Unterklassen gleich sind. Dabei können in einer Unterklasse die Attribute und Methoden um weitere ergänzt werden, und auch die bestehenden Methodenrümpfe können, müssen aber nicht ergänzt oder neu definiert (überschrieben) werden, um weitere Funktionen mit einzubinden. | |
− | == und | + | Um eine Vererbung herzustellen, muss in der Unterklasse das Schlüsselwort <tt>extends</tt> bei dem Klassennamen ergänzt werden. |
− | + | ||
+ | <tt>class UNTERKLASSE '''extends''' OBERKLASSE | ||
+ | { | ||
+ | ... | ||
+ | }</tt> | ||
+ | |||
+ | === Abstrakte Klassen === | ||
+ | Von abstrakten Klassen können keine Objekte erzeugt werden, sie fungieren nur als Oberklasse. Gekennzeichnet werden sie durch das Schlüsselwort <tt>abstract</tt> am Anfang des Quelltextes. | ||
+ | |||
+ | <tt>'''abstract''' class OBERKLASSE | ||
+ | { | ||
+ | ... | ||
+ | }</tt> | ||
+ | |||
+ | === Abstrakte Methoden === | ||
+ | Bei abstrakten Methoden wird nur in der Oberklasse der Methodenkopf in den Quelltext implementiert und in der Unterklasse muss zwingend der Methodenrumpf geschrieben werden. Zudem muss auch hier das Schlüsselwort <tt>abstract</tt> hinzugefügt werden. | ||
+ | |||
+ | <tt>'''abstract''' void Methode();</tt> | ||
+ | |||
+ | |||
+ | == Interface == | ||
+ | Das Interface ist eine spezielle Form von Vererbung, da hier keine Attribute deklariert und initialisiert werden, die von den Unterklassen genutzt werden, sondern nur Methoden vererbt werden. Daher ist hier auch kein Konstruktor zu finden. Zudem müssen von den Unterklassen die Methoden wie bei abstrakten Methoden die Methoden übernommen werden und um einen Methodenrumpf ergänzt werden. Dabei muss allerdings nicht das Schlüsselwort <tt>abstract</tt> ergänzt werden. | ||
+ | |||
+ | Interface-Methode: | ||
+ | |||
+ | <tt>public void BeispielMethode(); </tt> | ||
+ | |||
+ | Eine Interface-Klasse wird durch das Schlüsselwort <tt>interface</tt> deklariert. | ||
+ | |||
+ | <tt>public '''interface''' OBERKLASSE | ||
+ | { | ||
+ | //Methoden | ||
+ | } </tt> | ||
+ | |||
+ | Um von einer Unterklasse zu einem Interface eine Referenz zu erstellen, muss das Schlüsselwort <tt>implements</tt> wie bei Vererbung ergänzt werden. Die Besonderheit ist, dass eine Unterklasse mehrere Interfaces und eine normale Vererbung nutzen kann. | ||
+ | |||
+ | * Unterklasse, die ein Interfaces nutzt: | ||
+ | <tt>class UNTERKLASSE '''implements''' OBERKLASSE1 | ||
+ | { | ||
+ | ... | ||
+ | }</tt> | ||
+ | |||
+ | * Unterklasse, die zwei Interfaces und eine Vererbung nutzt: | ||
+ | <tt>class UNTERKLASSE '''implements''' OBERKLASSE1, OBERKLASSE2 extends OBERKLASSE3 | ||
+ | { | ||
+ | ... | ||
+ | }</tt> | ||
+ | |||
+ | |||
+ | Die Interfaces und die Methoden des Interfaces sollten generell <tt>public</tt> sein, da die Interfaces meist von mehreren Schichten genutzt werden. |
Version vom 11. Oktober 2013, 18:22 Uhr
Vererbung dient zur Generalisierung von Klassen. Dabei werden in der Oberklasse Attribute und Methoden festgelegt, die von den Unterklassen übernommen werden. In diesen können weitere Attribute und Methoden ergänzt werden bzw. bestehende überschrieben werden können.
Bei Interfaces werden nur Methodenköpfe festgelegt, die von den Unterklassen übernommen werden müssen. Dabei kann eine Unterklasse mehrere Interfaces und zusätzlich eine Vererbung nutzen.
Inhaltsverzeichnis |
Vererbung
Vererbung ist nötig, um Klassen zu generalisieren. In der Oberklasse werden Attribute und Methoden festgelegt, die bei allen Unterklassen gleich sind. Dabei können in einer Unterklasse die Attribute und Methoden um weitere ergänzt werden, und auch die bestehenden Methodenrümpfe können, müssen aber nicht ergänzt oder neu definiert (überschrieben) werden, um weitere Funktionen mit einzubinden.
Um eine Vererbung herzustellen, muss in der Unterklasse das Schlüsselwort extends bei dem Klassennamen ergänzt werden.
class UNTERKLASSE extends OBERKLASSE { ... }
Abstrakte Klassen
Von abstrakten Klassen können keine Objekte erzeugt werden, sie fungieren nur als Oberklasse. Gekennzeichnet werden sie durch das Schlüsselwort abstract am Anfang des Quelltextes.
abstract class OBERKLASSE { ... }
Abstrakte Methoden
Bei abstrakten Methoden wird nur in der Oberklasse der Methodenkopf in den Quelltext implementiert und in der Unterklasse muss zwingend der Methodenrumpf geschrieben werden. Zudem muss auch hier das Schlüsselwort abstract hinzugefügt werden.
abstract void Methode();
Interface
Das Interface ist eine spezielle Form von Vererbung, da hier keine Attribute deklariert und initialisiert werden, die von den Unterklassen genutzt werden, sondern nur Methoden vererbt werden. Daher ist hier auch kein Konstruktor zu finden. Zudem müssen von den Unterklassen die Methoden wie bei abstrakten Methoden die Methoden übernommen werden und um einen Methodenrumpf ergänzt werden. Dabei muss allerdings nicht das Schlüsselwort abstract ergänzt werden.
Interface-Methode:
public void BeispielMethode();
Eine Interface-Klasse wird durch das Schlüsselwort interface deklariert.
public interface OBERKLASSE { //Methoden }
Um von einer Unterklasse zu einem Interface eine Referenz zu erstellen, muss das Schlüsselwort implements wie bei Vererbung ergänzt werden. Die Besonderheit ist, dass eine Unterklasse mehrere Interfaces und eine normale Vererbung nutzen kann.
- Unterklasse, die ein Interfaces nutzt:
class UNTERKLASSE implements OBERKLASSE1 { ... }
- Unterklasse, die zwei Interfaces und eine Vererbung nutzt:
class UNTERKLASSE implements OBERKLASSE1, OBERKLASSE2 extends OBERKLASSE3 { ... }
Die Interfaces und die Methoden des Interfaces sollten generell public sein, da die Interfaces meist von mehreren Schichten genutzt werden.