Sie sind auf Seite 1von 2

Gruppe B3 

Name:    SCHRÖDER  
Vorname:  ALEXEY 
Informatik (B.Sc.)                Matrikel‐Nr.:  193971 
Programmieren II (Java)             
Übungsblatt 05  SS2008              Name:   
SUKHAREVSKYY 
  Vorname: 
YEVHENIY 
Matrikel‐Nr.: 
194009 
   
  Name:   
DERHO 
  Vorname: 
VICTOR 
  Matrikel‐Nr.: 
194246 
Aufgabe 3. 
Nachfolgend finden Sie eine Klassendefinition mit inneren Klassen. Geben Sie in Form einer Tabelle unter Angabe der 
Zeilennummer zu jeder return Anweisung an, ob und warum der zugrunde liegende Zugriff erlaubt ist oder nicht. 
 
 
Quelltext  Fehler
1 public class Outer {   
2      public int a;   
3      public static int b;   
4   
5   public class Inner1 {   
6       public int f( ) {   
7       return a;  Zugriff erlaubt, da die Variable  a  aus der Klasse class Outer erreichbar ist und 
8       }  durch die Methode zurückgegeben werden kann. Hier spielt es keine Rolle ob die 
9       public int g( ) {  Variable oder Methode static oder nicht static definiert ist. 
   
10     return b;   Zugriff erlaubt, da die Variable  b aus der Klasse class Outer erreichbar ist und 
11    }  durch die Methode zurückgegeben werden kann. Hier spielt es keine Rolle ob die 
12     public int h( ) {  Variable oder Methode static oder nicht static definiert ist. 
   
13     return x(2, 3);  Zugriff erlaubt, da die Methode  x (int c, int d)  aus der Klasse class Outer 
14    }  erreichbar ist und durch die Methode zurückgegeben werden kann. Hier spielt es 
15     public int i( ) {  keine Rolle ob die Variable oder Methode static oder nicht static definiert ist. 
   
16     return y( );  Zugriff erlaubt, da die Methode  y ()  aus der Klasse class Outer erreichbar ist 
17    }  und durch die Methode zurückgegeben werden kann. Hier spielt es keine Rolle ob 
18  }  die Variable oder Methode static oder nicht static definiert ist. 
19   
20    public static class Inner2 {   
21        public int f( ) {   
22        return a;  Zugriff verweigert, da die Variable  a  nicht  static  deklariert ist. Die Klasse in 
23     }  der eine Methode die Variable  a zurückgibt ist jedoch static. 
24        public int g ( ) {   
25        return b ;  Zugriff erlaubt, da die Variable  b static deklariert ist und diese aus einer 
26     }  Methode einer statischen Klasse aufgerufen wird.   
27        public int h ( ) {   
28        return x ( 2 , 3 ) ;  Zugriff verweigert, da die Methode x(int c, int d) nicht static deklariert ist. 
29     }  Die Klasse in der x (int c, int d) aufgerufen wird ist jedoch static. 
30        public int i ( ) {   
31        return y ( ) ;  Zugriff erlaubt, da die Methode  y () static  deklariert ist und diese aus einer 
32     }  statischen Klasse aufgerufen wird.   
33  }   
34   
35    public int x (int c, final int d ) {   
36      class Inner3 {   
37           int e;   
38             public int f( ) {   
39             return a;  Zugriff erlaubt, da die neue Methode innerhalb einer inneren Klasse definiert ist, 
40            }  hier ist es nicht relevant ob die Methode oder Variable static oder nicht static 
  definiert ist. 
   
   
   
41             public int g( ) {   
42             return b;  Zugriff erlaubt, da die neue Methode innerhalb einer inneren Klasse definiert ist, 
43            }  hier ist es nicht relevant ob die Methode oder Variable static oder nicht static 
  definiert ist. 
   
44             public int h( ) {   
45             return x(2, 3);  Zugriff erlaubt, da die neue Methode innerhalb einer inneren Klasse definiert ist, 
46            }  hier ist es nicht relevant ob die Methode oder Variable static oder nicht static 
  definiert ist. 
47             public int i( ) {   
48             return y( ) ;  Zugriff erlaubt, da die neue Methode innerhalb einer inneren Klasse definiert ist, 
49            }  hier ist es nicht relevant ob die Methode oder Variable static oder nicht static 
  definiert ist. 
50             public int j( ) {   
51             return c;  Zugriff verweigert, da die Variable c in der Methode  
52            }  public int x ( int c, final int d) nicht final deklariert wurde, damit kann 
  die Variable c nicht aus einer anderen Methode zurückgegeben werden.   
53             public int k( ) {   
54             return d;  Zugriff erlaubt, da die Variable d final deklariert ist und somit sicher nicht mehr 
55            }  modifiziert werden kann, deshalb kann die Variable d in einer anderen Methode 
56       }  zurückgegeben werden. 
   
57      return e;  Zugriff verweigert, da die Variable e sich außerhalb der inneren Klasse  
58   }  class Inner3 befindet, die Variable e kann somit nicht aufgelöst werden. 
59   
60      public static int y( ) {   
61      return new Inner1( ).f( );  Zugriff verweigert, da die return  Anweisung in einer statisch definierten 
62      }  Methode steht! und das zurückzugebende Objekt,  class Inner1  nicht statisch 
63 }  definiert ist.