Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Walther-Rathenau- Gewerbeschule Nazar1 Abstrakte Klassen und das Interface-Konzept.

Ähnliche Präsentationen


Präsentation zum Thema: "Walther-Rathenau- Gewerbeschule Nazar1 Abstrakte Klassen und das Interface-Konzept."—  Präsentation transkript:

1 Walther-Rathenau- Gewerbeschule Nazar1 Abstrakte Klassen und das Interface-Konzept

2 Walther-Rathenau- Gewerbeschule Nazar2 Vererbung Fahrzeug LKWPKWMotorradFahrrad

3 Walther-Rathenau- Gewerbeschule Nazar3 Abstrakte Klassen Eine Klasse wird als abstract deklariert, wenn es Eigenschaften und Verhalten mehrerer Klassen zusammen- fasst, aber es wenig Sinn macht, konkrete Objekte der Klasse zu besitzen. „Um was für ein Fahrzeug genau soll es sich handeln?“ Methoden werden dann als abstract markiert, wenn sie in den Unterklassen überschrieben werden müssen, da jede Unterklasse eine spezielle Variante der Methode benötigt. „Der Verbrauch eines Fahrzeugs hängt von der konkreten Klasse ab!“

4 Walther-Rathenau- Gewerbeschule Nazar4 Abstrakte Klassen Abstrakte Klassen fassen Klassen mit gemeinsamen Eigenschaften zusammen. Sie können nie instantiiert werden! Sie können abstrakte Methoden beinhalten, die erst in Unterklassen implementiert werden müssen. Im Gegensatz zu interfaces, dürfen aber in abstrakte Klassen Methoden implementiert (programmiert) werden. Sobald eine Klasse mindestens eine abstrakte Methode enthält, muss die Klasse selbst auch als abstract deklariert werden.

5 Walther-Rathenau- Gewerbeschule Nazar5 Abstrakte Klassen Abstrakte Klassen wird das Schlüsselwort abstract vor dem Schlüsselwort class vorangestellt. Abstrakte Methoden enden mit einem Semikolon und haben keinen Methodenkörper, d.h. sie sind nicht implementiert! Nicht-abstrakte Klassen müssen alle abstrakte Methoden ihrer Superklassen überschreiben, sofern sie nicht selbst als abstrakt deklariert sind.

6 Walther-Rathenau- Gewerbeschule Nazar6 Abstrakte Klassen Die Konstruktoren in den abstrakten Klassen werden nur durch super-Aufrufe in den Unterklassen aufgerufen werden!

7 Walther-Rathenau- Gewerbeschule Nazar7 Abstrakte Klassen Abstrakte Methoden dürfen nie zusätzlich als private oder final deklariert werden! Warum? Abstrakte Methoden dürfen protected oder default sein. Abstrakte Methoden dürfen keinen Block mit geschweiften Klammern definieren!

8 Walther-Rathenau- Gewerbeschule Nazar8 Übungen Lesen Sie Kapitel 51 im „Gailer“ durch: Bearbeiten Sie die zugehörigen Programmieraufgaben und Quiz.

9 Walther-Rathenau- Gewerbeschule Nazar9 Interfaces (Schnittstellen)

10 Walther-Rathenau- Gewerbeschule Nazar10 Interfaces (Schnittstellen) Interfaces (Schnittstellen) sind im Wesentlichen eine Sammlung von Methoden-Signaturen ohne konkrete Implementierung. Schnittstellen können aber auch Konstanten enthalten. Schnittstellen eignen sich dann, wenn verschiedene (nicht notwendigerweise miteinander in einer Vererbungsbeziehung stehende) Objekte teilweise die gleichen Fähigkeiten haben können.

11 Walther-Rathenau- Gewerbeschule Nazar11

12 Walther-Rathenau- Gewerbeschule Nazar12 Interfaces (Schnittstellen) Implementiert eine nicht abstrakte Klasse ein bestimmtes Interface, dann achtet der Compiler darüber, dass alle Methoden des Interfaces durch die Klasse implementiert („ausprogrammiert“) werden. Wie eine Methode implementiert wird kann natürlich der Compiler nicht vorgeben....

13 Walther-Rathenau- Gewerbeschule Nazar13 Interfaces (Schnittstellen) Implementiert eine nicht abstrakte Klasse ein bestimmtes Interface, dann muss sie die folgenden Aspekte beachten: –Anbieten einer konkreten Implementierung für jede im Interface deklarierten Methode! –Beachtung der Regeln für die Überschreibung von Methoden. Zum Beispiel darf die Parameterliste einer Interface-Methode in der Klasse nicht verändert werden. –Es dürfen keine weiteren checked-Exceptions außer die im Interface definierten „geworfen“ werden. Implementiert eine abstrakte Klasse ein Interface, dann muss sie keine im Interface definierte Methode implementieren: public abstract class Flug implements Fliegen { } //Legale (leere) Klassen-Definition

14 Walther-Rathenau- Gewerbeschule Nazar14 Interfaces (Schnittstellen) Eine Klasse darf mehr als ein Interface implementieren. Die folgende Klasse implementiert die Schnittstellen A, B und C: Eine Klasse kann nur von einer anderen Klasse direkt erben, aber beliebig viele Interfaces implementieren: Ein Interface kann aber von beliebig vielen anderen Interfaces erben. Dabei wird auch das Schlüsselwort extends verwendet. Im folgenden Beispiel erbt die Schnittstelle A von den Schnittstellen B und C: public class MyClass implements A, B, C {...} public class MyClass extends SuperC implements A, B, C {…} public class MyClass extends ClassA, ClassB implements A, B, C {…} //Illegal public interface A extends B, C {...}

15 Walther-Rathenau- Gewerbeschule Nazar15 Aufgabe 1 public interface A { public void a(); } public interface B { public void b(); } public interface C extends A, B { public void c(); } public interface D { public void d(); } public class MyClass implements C, D { /* * Programmieren Sie den Rumpf dieser Klasse. * Geben Sie in den Methoden irgendwelche Bildschirm- * Informationen aus! * Testen Sie Ihr Ergebnis anschließend. * Begründen Sie die Ausgabe! */ }

16 Walther-Rathenau- Gewerbeschule Nazar16 Aufgabe 2 Welche der folgenden Definitionen ist legal bzw. illegal? class A {} class B implements A {} interface C {} interface D {} interface E implements C {} interface F extends A {} interface G extends D {} class H extends A, B {} class I implements C, D {} interface J extends C, D {} interface K extends A, implements C {}

17 Walther-Rathenau- Gewerbeschule Nazar17 Übungen Lesen Sie Kapitel 53 im „Gailer“ durch: Bearbeiten Sie die zugehörigen Programmieraufgaben und Quiz.


Herunterladen ppt "Walther-Rathenau- Gewerbeschule Nazar1 Abstrakte Klassen und das Interface-Konzept."

Ähnliche Präsentationen


Google-Anzeigen