@@ -11,6 +11,7 @@ Methoden müssen unterschiedlich genug sein, ansonsten Compilefehler. Folgende R
|
|||||||
- Methoden aus Oberklassen können in Unterklassen überladen werden
|
- Methoden aus Oberklassen können in Unterklassen überladen werden
|
||||||
- Konstruktoren können auch überladen sein, aber nicht überschrieben
|
- 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).
|
- 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
|
#### Primitive und Autoboxing
|
||||||
- Wenn perfekt passende Methode vorhanden wird sie ausgewählt (sowohl bei Primitiven als auch bei Wrapper)
|
- 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.
|
- 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.
|
- 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.
|
- 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
|
#### 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
|
||||||
Reference in New Issue
Block a user