2019-11-04 21:53:38 +00:00
parent 3ec46791b2
commit d5440731f5

@@ -25,8 +25,11 @@ Interfaces können konkrete Implementierungen haben (`default`)
Oberklasse deklariert Checked Exceptions, Unterklasse nicht mehr.
Wenn Oberklasse als Typ deklariert muss die Exception behandelt werden, auch wenn zur Laufzeit Unterklasse vorhanden ist. **Compilefehler**, da Compiler Exceptions prüft.
### Überladen vs. Überschreiben (S. 112, S. 116)
Aufpassen, Methoden können auch solche aus Oberklassen überladen. Dadurch ggf. Fehler oder nicht. Methodenauswahl Überladen Compilezeit, Überschreiben Laufzeit.
### Überladen vs. Überschreiben (S. 112, S. 116, S. 130)
- Aufpassen, Methoden können auch solche aus Oberklassen überladen.
- Dadurch ggf. Fehler oder nicht.
- Überladen: Rückgabe kann sich ändern. Überschreiben: Nur covariant (Subklassen)
- Methodenauswahl Überladen Compilezeit, Überschreiben Laufzeit.
### main() kan überladen werden (S. 115)
Aber nur die public static void main (String [] args) kann von der JVM als Startmethode verwendet werden.
@@ -38,3 +41,20 @@ Aber nur die public static void main (String [] args) kann von der JVM als Start
- Klassen extenden Klassen (nicht mehrere)
- Interfaces extenden Interfaces (auch mehrere)
- Klassen: erst extends, dann implements
### Kovariante Rückgabe (S. 132)
Methoden können Unterklassen des definierten Rückgabewertes liefern.
### Initialisierungsblöcke (S. 147)
Initialisierungsblöcke können an beliebiger Stelle (auf Root-Ebene) einer Klasse stehen, nicht nur zu Beginn.
### Zugriff auf nichtstatische Objekte aus statischem Kontext (S. 150)
Aufpassen auf **versteckte** Zugriffe auf Felder/Methoden aus statischem Kontext heraus.
### Variablen-Deklaration und -Zuweisung (S. 185)
Erlaubt:
- int a, b, c
- int j, k=1, l, m=3
- int i; int j;
- int j, k=1, m=k+3; // Reihenfolge wichtig!