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.
Ihre "BInner" -Klasse funktioniert definitiv nicht _ funktioniert gut_. Bitte senden Sie kompilierbaren Code, der Ihr Problem darstellt. –