2019-11-07 19:55:26 +00:00
parent 9df4697b55
commit 9080f1f304

@@ -11,6 +11,7 @@ Methoden müssen unterschiedlich genug sein, ansonsten Compilefehler. Folgende R
- Methoden aus Oberklassen können in Unterklassen überladen werden
- Konstruktoren können auch überladen sein, aber nicht überschrieben
- Die tatsächliche Methode wird zur Compilezeit ermittelt (und damit der deklarierte Typ, nicht der tatsächliche zur Laufzeit).
- Gilt auch für statische Methoden, auch in Klassenhierarchie.
#### Primitive und Autoboxing
- Wenn perfekt passende Methode vorhanden wird sie ausgewählt (sowohl bei Primitiven als auch bei Wrapper)
@@ -34,6 +35,11 @@ Methoden in Unterklassen können solche in Oberklassen überschreiben. Folgende
- Selbe oder weniger restriktive Sichtbarkeit. Restriktiver nicht erlaubt. **Achtung:** Compilefehler, wenn Regeln für Überschreiben erfüllt, evtl. aber auch überladen.
- Kann weniger oder eingeschränktere checked Exceptions werfen, aber nicht mehr oder breitere. Unchecked beliebig.
- Die tatsächliche Methode wird zur Laufzeit anhand des tatsächlichen Typs ermittelt.
- `static`-Elemente werden nicht vererbt
- Können damit auch nicht überschrieben werden (aber neu definiert oder überladen, müssen also Überladen-Regeln befolgen).
- Deklarierter Typ entscheidend, nicht tatsächlicher zur Laufzeit.
- Sind in der Subklasse sichtbar und können über die Referenz angesprochen werden
#### Zugriff
- per `super.methode()` Zugriff auf super-Implementierung. `Klasse.super.methode()` geht auch. Bei Interfaces muss es `Interface.super.methode()` sein.
- per `super.methode()` Zugriff auf super-Implementierung. `Klasse.super.methode()` geht auch. Bei Interfaces muss es `Interface.super.methode()` sein.
- `super` kann nicht in einem statischen Kontext aufgerufen werden. `super` kann aber in einem nicht-statischen Kontext verwendet werden, um auf die Elemente zuzugreifen