2019-11-17 15:09:44 +00:00
parent f2834a3f5f
commit fedfcf98d6

@@ -69,7 +69,7 @@ Trowable (Checked)
-`ausdruck` muss Typ `enum`, `byte`, `short`, `int`, `char` oder `String` ergeben
- Vom Compiler berechenbare Audrücke in case-Anweisungen sind erlaubt (compile time constant). ``final int i = 1;`` geht, ``final int i; i = 1`` geht nicht.
- **Erlaubte Identifier-Namen**:
- Müssen mit `_`, `$` oder Buchstabe beginnen
- Müssen mit `_`, `$` (Währungssymbol) oder Buchstabe beginnen
- Danach auch Zahlen erlaubt
- Kein reserviertes Schlüsselwort
- Beliebig lang
@@ -258,7 +258,10 @@ Trowable (Checked)
- **Methodensichtbarkeit**: ``private final`` erlaubt (aber sinnlos)
- **static-Sichtbarkeit**:
- Statische Methoden nicht vererbt, aber in Subklasse sichtbar
- Es darf keine sonst gleiche, nichtstatische definiert werden
- Es darf keine sonst gleiche, nichtstatische definiert werden (Regeln wie Überladen, Typ in Hierarchie genügt, Rückgabe nicht)
- Eine identische statische Methode darf definiert werden (ist aber nicht überschrieben, da statisch). *Auswahl daher per Compilezeit-Typ, nicht polymorph*)
- **Polymorphie und Überladen**
- Signatur zur Compilezeit, also der definierte Typ. Es wird aber die Methode des tatsächlichen Objekts ausgeführt, sollte diese *zusätzlich* überladen sein. Wenn Methode nicht in der deklarierten Klasse vorhanden ist -> Compilerfehler.
- Signatur zur Compilezeit, also der definierte Typ. Es wird aber die Methode des tatsächlichen Objekts ausgeführt, sollte diese *zusätzlich* überladen sein. Wenn Methode nicht in der deklarierten Klasse vorhanden ist -> Compilerfehler.
- **Überschreiben vs. Überladen**:
- Überladen: Argumentliste muss sich ändern (exakter Typ zählt), damit Methode unterschiedlich ist. Rest egal, zählt aber nicht zur Unterscheidung.
- Überschreiben: Argumentliste darf sich nicht ändern (exakter Typ zählt). Exceptions können wegfallen, keine neuen oder Superklassen der vorhandenen. Sichtbarkeit nicht restriktiver, großzügiger geht. Rückgabe höchstens Subklasse.