class A { protected char a = 'a' ; }
class B { protected char b = 'b' ; }

public class C extends A {
  private char c = 'c' ;  // prywatne pola widoczne w klasie lokalnej
  public static char d = 'd' ;
  public void createLocalObject(final char e)
  {
    final char f = 'f' ;
    int i = 0;  // zmienna i nie jest finalna, więc jest bezużyteczna dla klasy lokalnej
    class Local extends B
    {
      char g = 'g' ;
      public void printVars()
      {
        // Wszystkie te pola i zmienne są dostępne dla tej klasy.
        System.out.println(g);  // (this.g) g jest polem tej klasy
        System.out.println(f);  // f jest finalną zmienną lokalną
        System.out.println(e);  // e jest finalnym lokalnym parametrem
        System.out.println(d);  // (C.this.d) pole d klasy zawierającej
        System.out.println(c);  // (C.this.c) pole c klasy zawierającej
        System.out.println(b);  // b jest dziedziczone przez tę klasę
        System.out.println(a);  // a jest dziedziczone przez klasę zawierającą
      }
    }
    Local l = new Local();  // utworzenie egzemplarza klasy lokalnej
    l.printVars();  // i wywołanie jego metody printVars().
  }
}
