@@ -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.
|
||||
- `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