Inner Klasse - Äußere Klasse



  • Ich war zunächst verwundert als ich folgendes (in der Art) sah:

    class Außen
    {
    private int xxx;
        class Innen
        {
            void Funktion(){ xxx = 2;}
        }
    }
    

    Anscheinend hat die Inner Klasse Zugriff auf Elemente der Äußeren... ist das so gewollt?
    Und wie mach ich das wenn es Überdeckungen gibt?

    class Außen
    {
    private int xxx;
    class Innen
    {
    private int xxx;
    void Funktion(){ xxx = 2;} // soll xxx der äußeren ändern
    }
    }
    [/code]

    ?



  • public class Outer
    {
      int xxx;
    
      class Inner
      {
        int xxx;
    
        void set()
        {
          this.xxx = 10;
          Outer.this.xxx = 20;
        }
    
        int get()
        {
          return this.xxx;
        }
      }
    
      void set()
      {
        this.xxx = 30;
      }
    
      int get()
      {
        return this.xxx;
      }
    
      public static void main(String[] args)
      {
        Outer outer = new Outer();
        Inner inner = outer.new Inner();
        inner.set();
        System.out.println(inner.get()); // 10
        System.out.println(outer.get()); // 20
      }
    }
    

Log in to reply