Eine Instanzmethode überschreibt alle Methoden gleicher Signatur in Oberklassen und Ober-Interfaces, die ansonsten zugreifbar wären (d.h. z.B. nicht die privaten Methoden).
Eine Instanzmethode darf allerdings keine Klassenmethode überschreiben!
Die einzige Möglichkeit, aus der Unterklasse auf überschriebene Instanzmethoden zuzugreifen ist der
super-Methodenaufruf
class Ober { String WhoAreYou() { return "Ober"; } } class Unter extends Ober { String WhoAreYou() { return "Unter"; } void identify() { System.out.println( "I'm " + WhoAreYou() + ". My superclass is " + super.WhoAreYou() + "."); Ober o = (Ober)this; System.out.println( "My superclass is not " + o.WhoAreYou() + "."); } }
Die Anweisung new Unter().identify(); schreibt:
I'm Unter. My superclass is Ober. My superclass is not Unter.