// Methoden überschreiben und Attribute verdecken

class A 
{
  int i = 5;
  int f() { return i; }
}

class B extends A
{
  int i = 77;			// verdeckt Attribut i in Klasse A
  int f() { return -i; }	// überschreibt Methode f in Klasse A
}


class VerdeckenTest2
{
  public static void main(String args[])
  {
    B b = new B();
    System.out.println(b.i);	// verweist auf B.i; gibt 77 aus
    System.out.println(b.f());	// verweist auf B.f(); gibt -77 aus

    A a = (A) b;		// b in ein Objekt der Klasse A umwandeln
    System.out.println(a.i);	// verweist nun auf A.i; gibt 5 aus
    System.out.println(a.f());	// verweist immer noch auf B.f(); gibt -77 aus
  }
}