Upcasting

class Lebensmittel { }
class Apfel extends Lebensmittel { }
 
// ...
 
Lebensmittel l = new Lebensmittel ();
Apfel        a = new Apfel();
l = a; // Upcast

Das Schlüsselwort instanceof

if(x instanceof Apfel)
    ((Apfel) x).f(); // Aufruf nur, wenn x ein Apfel ist

Wenn man instanceof verwendet, ist das meistens ein Zeichen von schlechter Codequalität!