- Subtyping
- Typisierung
- Deklarationstyp = statischer Typisierung
- statische Typsicherheit
- Behälterklasse
- Object ist per default der Supertyp aller Objekttypen
- Cast
- instanceof-Operator: Stellt Java extra dafür zur Verfügung
- Basisdatentypen und Subtyping
- Verpacken - Bibliothek: java.lang, Klasse mit Attribut value
- Wrapperklassen
- Autoboxing, Boxing und Unboxing
- Subtyping bei Arrays
- Klassifizierung von Objekten
- Ist-ein-Beziehung
- Spezialisierung und Abstraktion
- Spezialisierung
- Abstraktion
- Schnittstellentyp (interface)
- Interfaces und Subtyping
- Interfacedeklaration
- Klassentypen
- Interfacetypen
- Referenz- oder Objekttypen: Klassen-, Interface-, Arraytypen
- Supertyp
- Direkter Subtyp
- Interfacetypen als Subtypen
- Klassentypen als Subtypen
- Klassifikation und Subtyping: Subtyping ist ein hervoragendes Mittel, zur Klassifikation
- Typhierarchie erweitern
- Vererbung
- Vererbung = inheritance
- Überschreiben, overwriting
- Schlüsselwort "super"
- Vererbung und Objektinitialisierung
- Konstruktoren
- Vererbung und Konstruktoren!!!
- Vererbung und innere Klasse
- Vererbung, Subtyping und Subclassing
- Subclassing: Verberung und Subtyping in einem
- Abstrakte Klassen und Methoden
- Schlüsselwort "abstract"
- Abstrakte Klassen
- Abstrakte Methoden
- Mehrfachvererbung = multiple inheritance
- Vererbung und Kapselung
- Privater Zugriff, Paketloser Zugriff, öffentlicher Zugriff
- Geschützter Zugriff
1. Man kann eine Klasse so anwenden, wie sie ist (Anwendungsnutzung)
2. Man kann eine Klasse erben, um eine speziellere Klasse zu entwickeln (Verberungsnutzung)
- Schlüsselwort "protected"
- unveränderliche Klassen
- final
- Zusammenspiel von Vererbung und Kapselung
- private Attribute und Methoden: Werden vererbt, aber nicht zugreifbar
- Realisierung gekapselter Objektgeflechte
Kapselung
Klassinvarianten
Information Hiding = Geheimnisprinzip
private
Schachtelung
Schachtelung bei Blöcken
Schachtelung bei Klassen
Statisch Innere Klassen
innere Klassen
Behälter = Container
Ein Behälter ist ein Datentyp zum Speichern von Elementen bzw. Objekt-Referenzen
Parametrisierung von Typen
Typisierung von Programmiersprachen
Behälter für beliebige Objekte, Refernztyp, Superklasse object
parametrische Klassen = generische Klassen
Typparameter
Bausteine:
- awt
- beans
- io
- lang
- math
- net
- rmi
- security
- sql
- util
- awt
- event
- font
- image
- beans
- io
- lang
- math
- net
- rmi
- registry
- server
- security
- sql
- util
- concurrent
- jar
- zip
- regex
- awt: graphische Bedienoberflächen
- event
- font
- image: java.awt.image: Darstellung von Bildern
- beans
- io: Ein und Ausgabe
- lang: Standardpaket: Object, String, StringBuiler
- math: Klassen zur Programmierung mit Zahlen
- net: Socketverbindungen
- rmi: Remote method invocation: Entfernte Methodenaufrufe, Netzwerke
- registry
- server
- security
- sql: SQL
- util: Listen, Stapel, Bitfelder, Hashtabellen; Behandlung von Zeit- und Kalenderdaten
- concurrent
- jar
- zip
- regex
Ausnahmebehandlung:
1. Ausnahmebehandlung: Erschöpfen der zugeteilten Maschineressourcen, kein Speicher
2. Ausnahmen durch defensives Programmieren vermeidbar: Zugriff auf null
3. Ausnahmen, die nicht vermeidbar sind: Nutzer löscht Datei
- Objekt
- Throwable
- Error
- AbstractMethodError
- OutOfMemoryError
- StackoverflowError
- Exception
- RunTimeException
- NullPointerException
- IndexOutOfBoundsException
- IllegalArgumentException
- NumberFormatException
- IOException
- ClassNotFoundException
- KeinKaffeException
Zusammenspiel von Sprache und Bibliothek
1. Auslösen von Ausnahmen
2. Abfangen und Behandeln von Ausnahmen
3. Weiterreichen von Ausnahmen über Methodengrenzen hinweg
Ströme: Bausteine zur Ein- und Ausgabe
Strom = stream
Methode: read
read: Nächstes Zeichen
Kein weiteres Zeichen -1
Auf Eingabestrom kann nicht zugegriffen werden: IOException
Ergebnistyp: interface
Quellen: Dateien, Datenstrukturen (z.B. Arrays), Netzwerk, von anderen Strömen, durch den Benutzer