2016-06-15 11 views
0

Ich versuche o Zugriff auf ein geschütztes Feld der inneren Klasse durch Vererbung in einer anderen inneren Klasse. Aber ich stieß auf ein Problem:Zugriff geschützt Feld der inneren Klasse durch Vererbung

Gibt es einen Weg, wie auf dieses Feld zugreifen?

+0

Ihre "BInner" -Klasse funktioniert definitiv nicht _ funktioniert gut_. Bitte senden Sie kompilierbaren Code, der Ihr Problem darstellt. –

Antwort

-1

Der Zugriffsmodifizierer protected bedeutet, dass das Feld oder die Methode nur für die Klasse selbst und ihre untergeordneten Elemente verfügbar ist. Da die Klasse B die Nummer B.BInner nicht erweitert, kann sie nicht auf B.BInner.i zugreifen.

Die häufigste Art und Weise mit Zugriffsmodifikatoren zu arbeiten, ist Getter/Setter Paare, zu verwenden, die Sie in A.Inner erklären kann (weil dort i deklariert und B.BInner werden die Methoden erben):

class A{ 

    public class Inner{ 
     protected int i =5; 

     public int getI() { 
      return i; 
     } 

     public void setI(int i) { 
      this.i = i; 
     } 
    } 
} 

Aufruf getI() auf einem B.BInner Objekt wird dann den Wert i zurückgeben, und da es public ist, kann es überall verwendet werden.

Verwandte Themen