Einstieg in die Informatik mit Java

Ähnliche Dokumente
Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Geschachtelte Klassen

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Vererbung, Polymorphie

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Einstieg in die Informatik mit Java

Geschachtelte Klassen

Einstieg in die Informatik mit Java

Objektorientierte Programmierung und Klassen

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Repetitorium Informatik (Java)

4. Vererbung Die Klasse Object. Die Klasse Object

Einstieg in die Informatik mit Java

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Implementieren von Klassen

Innere Klassen in Java

Prof. W. Henrich Seite 1

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Tag 7 Repetitorium Informatik (Java)

3 Objektorientierte Konzepte in Java

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

1 Klassen und Objekte

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung

Modularisierung in Java: Pakete Software Entwicklung 1

Programmieren in Java

Programmieren in Java

Einstieg in die Informatik mit Java

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Programmiertechnik Objektorientierung

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Java Einführung Vererbung und Polymorphie. Kapitel 13

Klassen als Datenstrukturen

EINFÜHRUNG IN DIE PROGRAMMIERUNG

7. Übung Informatik II - Objektorientierte Programmierung

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Klassenbeziehungen & Vererbung

3 Objektorientierte Konzepte in Java

C++ Klassen weitere Funktionen

Arten von Klassen-Beziehungen

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Info B VL 11: Innere Klassen/Collections

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte

Klassen mit Instanzmethoden

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

Statische und Nichtstatische Methoden Properties/ Eigenschaften

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

1 Abstrakte Klassen, finale Klassen und Interfaces

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Vererbung und Polymorphie

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Vererbung & Schnittstellen in C#

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Philipp Güttler Objektorientierung und komplexe Datentypen

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Algorithmen und Datenstrukturen

Klassenvariablen, Klassenmethoden

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse

Java Vererbung. Inhalt

Programmieren in Java -Eingangstest-

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

Objektorientierte Programmierung

Überschreiben von Methoden

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Vererbung. Was versteht man unter dem Begriff Vererbung?

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Objektorientierte Programmierung. Kapitel 14: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces

Java I Vorlesung Vererbung und Sichtbarkeit

Einstieg in die Informatik mit Java

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Transkript:

1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik

Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen 5 static geschachtelte Klassen und Schnittstellen

Gliederung 3 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen 5 static geschachtelte Klassen und Schnittstellen

4 / 16 Einführung Innere Klassen sind geschachtelte Klassen, d.h. eine Klasse wird in einer anderen deklariert. Das bringt die folgenden Vorteile mit sich: zusammengehörige Klassen werden zusammengefasst, die Sichtbarkeit wird kontrolliert, Namenskonflikte mit anderen Objekten im gleichem Paket werden vermieden. Geschachtelte Klassen können unabhängig vom Modifizierer gegenseitig auf ihre Komponenten und Methoden zugreifen.

Gliederung 5 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen 5 static geschachtelte Klassen und Schnittstellen

Element-Klassen Die innere Klasse wird bei den Elementen der äußeren Klasse deklariert. Die Klassennamen müssen sich unterscheiden. Die innere Klasse benötigt eine Instanz der äußeren Klasse. Der Modifizierer der inneren Klasse ist frei wählbar, d.h. er hängt nicht vom Modifizierer der äußeren Klasse ab. Syntax class Aussen { / / Daten und Methoden } class Innen { / / Daten und Methoden } 6 / 16

7 / 16 Element-Klassen Bei der Kompilierung legt der Kompiler für die innere Klasse eine separate class-datei an, im obigen Beispiel: Aussen$Innen.class Achtung Elementklassen dürfen keine statischen Komponenten, Methoden oder Klassen enthalten, solange die Elementklasse nicht selber static ist!

Gliederung 8 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen 5 static geschachtelte Klassen und Schnittstellen

Lokale Klassen Lokale Klassen werden in einem Block in einer Methode der äußeren Klasse deklariert. Die Klassennamen müssen sich unterscheiden. Es sind keine Modifizierer sowie statische Komponenten erlaubt. Zugriffe auf lokale Konstanten der äußeren Klasse sind erlaubt, dabei müssen die Konstanten allerdings vor der inneren Klasse definiert sein, Zugriffe auf lokale Variablen der äußeren Klasse sind hingegen verboten (Bei der Kompilierung wird eine separate class Datei erzeugt, die eine Kopie der lokalen Variablen enthält.). Achtung Ist die Methode statisch, so darf in der inneren Klasse nur auf statische Elemente der äußeren Klasse zugegriffen werden, andernfalls auf alle! 9 / 16

Beispiel class Aussen { private i n t var1 ; public void methode ( ) { i n t var2 ; f i n a l i n t konst1 = 333; class Innen { / / innere Klasse Innen ( ) { / / Konstruktor System. out. p r i n t l n ( var1 ) ; / / ok System. out. p r i n t l n ( var2 ) ; / / Fehler! System. out. p r i n t l n ( konst1 ) ; / / ok } } new Innen ( ) ; / / Konstruktor A u f r u f } public s t a t i c void main ( S t r i n g [ ] s ) { Aussen Referenz = new Aussen ( ) ; Referenz. methode ( ) ; } } 10 / 16

Gliederung 11 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen 5 static geschachtelte Klassen und Schnittstellen

Anonyme Klassen 12 / 16 Manchmal werden Klassen (Subklassen, Implementierungen einer Schnittstelle) nur für eine einzige Instanz benötigt. Beispiel... class MeineKlasse extends Vorlage { void i n f o ( ) {... } / / Methode ueberschreiben } MeineKlasse m = new MeineKlasse ( ) ; / / einmalig Instanz b i l d e n...

Anonyme Klassen Dies kann einfacher mit einer anonymen Klasse formuliert werden. Anonyme Klassen sind lokal und verzichten auf einen Bezeichner, also einen Namen für die Klasse. Beispiel... Vorlage m = new Vorlage ( ) { void i n f o ( ) {... } } ;... Es wird eine abgeleitete Klasse der Klasse Vorlage gebildet und die Methode info() ersetzt. Weiterhin wird eine Instanz der anonymen Klasse erzeugt, die den Typ der Superklasse besitzt. 13 / 16

14 / 16 Anonyme Klassen Anonyme Klassen können nur mit Schnittstellen bzw. Basisklassen gebildet werden. Definitionen eigener neuer Methoden sind nicht sinnvoll, da diese nicht angesprochen werden können. Es kann kein (expliziter) Konstruktor gebildet werden. Damit ist der Zugriff auf den super-konstruktor ebenfalls nicht möglich. Es ist insgesamt nur eine Instanz möglich. Der Kompiler erzeugt für diese Instanz eine eigene class-datei (an den Namen der äußeren Klasse wird eine fortlaufende Nummer angehängt, also z.b. Aussen$1.class). Achtung Es sind keine statische Komponenten erlaubt!

Gliederung 15 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen 5 static geschachtelte Klassen und Schnittstellen

16 / 16 static geschachtelte Klassen und Schnittstellen Statisch geschachtelte Klassen bzw. Schnittstellen verhalten sich wie Elementklassen, sind jedoch zusätzlich mit dem Schlüsselwort static versehen. Sie besitzen keinen Bezug zu einer Instanz und sind daher sogenannte Top-Level Klassen bzw. Top-Level Schnittstellen. Von außen über die Klassennamen Aussen.Innen ansprechbar. Außer beim Namen besitzt diese Klassengattung keine echte Schachtelung. Eine statisch geschachtelte Schnittstelle darf eine Klasse enthalten, welche (implizit) statisch ist und daher eine Top-Level Klasse ist.