Zugriff auf geschützte innere Klasse beim Erben nicht möglich
Beim Lesen von "Thinking in Java" bin ich in Ex: 6 des Kapitels Innere Klassen geblieben.
Übung 6: (2) Erstellen Sie eine Schnittstelle mit mindestens einer Methode in einem eigenen Paket. Erstellen Sie eine Klasse in einem separaten Paket. Fügen Sie eine geschützte innere Klasse hinzu, die die Schnittstelle implementiert. In einem dritten Paket erben Sie von Ihrer Klasse und geben innerhalb einer Methode ein Objekt der geschützten inneren Klasse zurück, das während der Rückkehr an die Schnittstelle weitergeleitet wird.
Das ist mein Code:
IOne.javaSchnittstelle
package intfpack;
public interface IOne{
void f();
}
COne.javaKlasse mit geschützter innerer Klasse, die die Schnittstelle implementiert
package classpack;
import intfpack.*;
public class COne{
protected class Inner implements IOne{
public void f(){System.out.println("Inner class of COne");}
}
}
CTwo.javaVon Klasse mit geschützter innerer Klasse erben
package thirdpack;
import classpack.*;
import intfpack.*;
public class CTwo extends COne{
public IOne getInner(){
IOne io = new Inner();
return io;
}
public static void main(String[] args){
CTwo ct = new CTwo();
ct.getInner();
}
}
Copmiler sagt als nächstes:
javac CTwo.java
CTwo.java:9: Inner() has protected access in classpack.COne.Inner
IOne io = new Inner();
^
1 error
Aber das Buch sagt, dass ich in abgeleiteten Klassen auf geschützte innere Klassen zugreifen kann. Wo ist ein Fehler?