Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Abstrakte Klassen und das Interface-Konzept

Ähnliche Präsentationen


Präsentation zum Thema: "Abstrakte Klassen und das Interface-Konzept"—  Präsentation transkript:

1 Abstrakte Klassen und das Interface-Konzept
Ahmad-Nessar Nazar Abstrakte Klassen und das Interface-Konzept Walther-Rathenau-Gewerbeschule Nazar

2 Vererbung Fahrzeug LKW PKW Motorrad Fahrrad
Ahmad-Nessar Nazar Vererbung Fahrzeug LKW PKW Motorrad Fahrrad Walther-Rathenau-Gewerbeschule Nazar

3 Ahmad-Nessar Nazar 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!“ Walther-Rathenau-Gewerbeschule Nazar

4 Ahmad-Nessar Nazar 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. Walther-Rathenau-Gewerbeschule Nazar

5 Ahmad-Nessar Nazar 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. Walther-Rathenau-Gewerbeschule Nazar

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

7 Ahmad-Nessar Nazar 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! Walther-Rathenau-Gewerbeschule Nazar

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

9 Ahmad-Nessar Nazar Interfaces (Schnittstellen)
Walther-Rathenau-Gewerbeschule Nazar

10 Interfaces (Schnittstellen)
Ahmad-Nessar Nazar 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. Walther-Rathenau-Gewerbeschule Nazar

11 Ahmad-Nessar Nazar Walther-Rathenau-Gewerbeschule Nazar

12 Interfaces (Schnittstellen)
Ahmad-Nessar Nazar 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.... Walther-Rathenau-Gewerbeschule Nazar

13 Interfaces (Schnittstellen)
Ahmad-Nessar Nazar 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 Walther-Rathenau-Gewerbeschule Nazar

14 Interfaces (Schnittstellen)
Ahmad-Nessar Nazar 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 {...} Walther-Rathenau-Gewerbeschule Nazar

15 Aufgabe 1 public interface A { public void a(); }
Ahmad-Nessar Nazar 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! */ } Walther-Rathenau-Gewerbeschule Nazar

16 Aufgabe 2 Welche der folgenden Definitionen ist legal bzw. illegal?
Ahmad-Nessar Nazar 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 {} Walther-Rathenau-Gewerbeschule Nazar

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


Herunterladen ppt "Abstrakte Klassen und das Interface-Konzept"

Ähnliche Präsentationen


Google-Anzeigen