Programmierung Java 1: Interfaces Und Generics PDF
Document Details
Uploaded by CostEffectiveZebra5623
Fachhochschule Erfurt
Robert Zeranski
Tags
Related
- CS0070 Object-Oriented Programming Module 1 PDF
- Object Oriented Programming (2nd Year 1st Sem) PDF
- VILLASAN Object-Oriented Programming PDF
- Introduction To Object Oriented Programming PDF
- Cours Java - Héritage, Polymorphisme et Classes Génériques (PDF)
- Object-Oriented Programming Prelim Workbook PDF (2025)
Summary
These are lecture notes on Java programming, specifically focusing on interfaces and generics. The document contains examples and explanations related to these concepts, along with diagrams.
Full Transcript
Programmierung Java 1 Interfaces und Generics Dr. Robert Zeranski DAKO GmbH, Jena Letzte Woche … Vererbung - Super- und Subklassen - abstrakte Klassen - finale Elemente - Methoden überschreiben - implizites und explizites Casting Object - Superklasse mit bestimmten Eige...
Programmierung Java 1 Interfaces und Generics Dr. Robert Zeranski DAKO GmbH, Jena Letzte Woche … Vererbung - Super- und Subklassen - abstrakte Klassen - finale Elemente - Methoden überschreiben - implizites und explizites Casting Object - Superklasse mit bestimmten Eigenschaften - jedes Objekt in Java erbt von dieser Super-Klasse - wichtige Methoden Dr. Robert Zeranski [email protected] Programmierung Java 1 1 Der Klassiker Dr. Robert Zeranski [email protected] Programmierung Java 1 2 Rectangle & Square: Vererbung? Dr. Robert Zeranski [email protected] Programmierung Java 1 3 Rectangle erbt von Square I (privates) Feld und Konstruktur Methoden: Getter Setter Dr. Robert Zeranski [email protected] Programmierung Java 1 4 Rectangle erbt von Square II neues (privates) Feld Konstruktor ruft Konstruktor von Square auf Methoden müssen überschrieben werden → (da sich die Berechnung ändert) Dr. Robert Zeranski [email protected] Programmierung Java 1 5 Rectangle erbt von Square III Instanz von Rectangle Instanz von Square Instanz von Rectangle Das Objekt sr kann nicht auf getWidth() zugreifen, aber… … die Ausgabe ist: Dr. Robert Zeranski [email protected] Programmierung Java 1 6 Square erbt von Rectangle I (private) Felder Konstruktur → damit kein Leerkonstruktor Methoden: Getter Setter Dr. Robert Zeranski [email protected] Programmierung Java 1 7 Square erbt von Rectangle II Square wird von Rectangle abgeleitet Konstruktor muss implementiert werden → Konstruktor von Rectangle wird aufgerufen Setter werden überschrieben, damit sichergestellt ist, dass die Seiten immer gleich lang sind Dr. Robert Zeranski [email protected] Programmierung Java 1 8 Square erbt von Rectangle III Instanz von Rectangle Instanz von Square Instanz von Square Ausgabe: Dr. Robert Zeranski [email protected] Programmierung Java 1 9 Das geht besser…...mit Interfaces Dr. Robert Zeranski [email protected] Programmierung Java 1 10 Interfaces I - Interfaces stellen eine Art Vertrag oder Schablone dar → Schnittstellen - eine Klasse (und damit deren Objekte) sichern deren Nutzern zu, eine bestimmte Schnittstelle zu unterstützen - die Details der Implementierung spielen dabei keine Rolle → es ist ausreichend zu wissen, dass die Methoden vorhanden sind und eine Implementierung gewährleistet ist Dr. Robert Zeranski [email protected] Programmierung Java 1 11 Interfaces II - Interfaces sind Referenzdatentypen - Interfaces enthalten nur Konstanten, Methodendefinitionen und verschachtelte Typen → Methoden werden nicht implementiert, d.h. Methodenrumpf ist nicht vorhanden → Ausnahme: Default-Methoden (seit Java 8) - es gibt keine Instanzen von Interfaces (wie bei abstrakten Klassen) - Interfaces werden von Klassen implementiert → die implementierte Klasse ist dann konform zu diesem Interface → eine Klasse kann beliebig viele Interfaces implementieren! - Interfaces können vorhandene Interfaces erweitern (Vererbung) Dr. Robert Zeranski [email protected] Programmierung Java 1 12 Interfaces III - ein Interface wird über das Schlüsselwort interface definiert - Convention: Interfaces beginnen mit einem I, gefolgt von Namen des Interfaces (CamelCase) public interface IA { … } - eine Klasse A implementiert ein Interface IA über das Schlüsselwort implements public class A implements IA { … } Dr. Robert Zeranski [email protected] Programmierung Java 1 13 Interfaces IV - das Schlüsselwort default bei einer Methodendefinition erlaubt die konkrete Implementierung einer Methode (seit Java 8) public default void methodA() { … } - es sind auch mehrere Interfaces möglich - es kann auch von einer Klasse geerbt werden, während zusätzlich Interfaces implementiert werden public class A extends B implements IA, IC { … } - Beachte: Super-Klassen vererben ihre Interfaces natürlich implizit an ihre Sub-Klassen Dr. Robert Zeranski [email protected] Programmierung Java 1 14 Und nun mit Interfaces… Dr. Robert Zeranski [email protected] Programmierung Java 1 15 …und nun mit Interfaces Verwendung: Ausgabe: Dr. Robert Zeranski [email protected] Programmierung Java 1 16 Interfaces als Datentypen! - die Erstellung eines neuen Interfaces definiert gleichzeitig einen neuen Referenzdatentyp → wenn man eine Variable dieses Typs erstellt, so muss jedes Objekt welchen man dieser zuweisen will, das betreffende Interface implementieren IQuadrilateral quadrilateral = new Rectangle(2, 3); - von einem Interface selbst kann man aber keine Instanzen erzeugen! IQuadrilateral quadrilateral = new IQuadrilateral(); Dr. Robert Zeranski [email protected] Programmierung Java 1 17 Erweiterung von Interfaces - Veränderung eines Interfaces (z.B. das Hinzufügen einer Methode) sorgen dafür, dass alle implementierenden Klassen ebenfalls angepasst werden müssen → Vorsicht bei der Änderung eines Interfaces - Interfaces können aber auch Veerbung nutzen → In einem solchen Fall sollten Interfaces durch ein neues Interface erweitert werden, welches vom alten Interface erbt interface IQuadrilateral extends IShape { … } Dr. Robert Zeranski [email protected] Programmierung Java 1 18 Wichtige Interfaces Comparable: Definiert eine compareTo()-Methode, welche zwei Instanzen einer Klasse auf Ordnung (Reihenfolge) vergleicht → wichtig für Sortieralgorithmen Cloneable: gibt an ob Objekte geklont werden dürfen, muss clone() implementieren Serializable: Gibt an ob Objekte serialisiert werden können → Byte- Repräsentation des Objektes, z.B. für die Datenübertragung Runnable: Klassen, welche dieses Interface implementieren, müssen eine run()-Methode implementieren → parallele Ausführung Iterable: implementiert einen Iterator vom Interface Iterator, welcher es erlaubt Elemente in dieser Klasse zu iterieren Dr. Robert Zeranski [email protected] Programmierung Java 1 19 … aber da fehlt etwas! Comparable, Iterable, Iterator Dr. Robert Zeranski [email protected] Programmierung Java 1 20 Generics I - ermöglichen es , Refenzdatentypen (Klassen und Interfaces) als Parameter bei der Definition von Klassen, Interfaces und Methoden zu verwenden → Vermeidung von Type-Casts und stärkeres Type-Checking → generische Algorithmen und Datenstrukturen werden möglich Identifier: T gibt den Typ an, welcher verwendet werden soll → bei der Definition ist dieser generisch! → bei der Instanziierung muss dieser angegeben werden, kann aber auch aus einem Generic stammen Identifier: Der Typ T muss von X abgeleitet sein, dabei kann X sowohl eine Klasse als auch ein Interface sein Dr. Robert Zeranski [email protected] Programmierung Java 1 21 Generics II Beispiel einer nicht-generischen Klasse und ihrer Nutzung: Cast beim Auslesen nötig, denn es könnte jedes beliebige Objekt enthalten sein → Gefahr von Laufzeitfehlern Dr. Robert Zeranski [email protected] Programmierung Java 1 22 Generics III Das Beispiel nun mit einer generischen Klasse: Compile-Fehler: Wir haben die GenericBox mit einem String initialisiert Dr. Robert Zeranski [email protected] Programmierung Java 1 23 Generics IV Es kann mehr als ein Typ in einem Generic geben: → oder → oder … → … es können beliebig viele Typen separiert angegeben werden Dr. Robert Zeranski [email protected] Programmierung Java 1 24 Generics V Dr. Robert Zeranski [email protected] Programmierung Java 1 25