Чтение через "Мышление в Java" я застрял в главе 6 из раздела "Внутренние классы".
Упражнение 6: (2) Создайте интерфейс, по крайней мере, с одним методом в своем собственном пакете. Создать класса в отдельном пакете. Добавьте защищенный внутренний класс, который реализует интерфейс. В третий пакет, наследовать от вашего класса и, внутри метода, вернуть объект защищенный внутренний класс, переход к интерфейсу во время возврата.
Это мой код:
IOne.java
интерфейс
package intfpack;
public interface IOne{
void f();
}
COne.java
Класс с защищенным внутренним классом, который реализует интерфейс
package classpack;
import intfpack.*;
public class COne{
protected class Inner implements IOne{
public void f(){System.out.println("Inner class of COne");}
}
}
CTwo.java
Наследование класса с защищенным внутренним классом
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();
}
}
Скотт говорит следующее:
javac CTwo.java
CTwo.java:9: Inner() has protected access in classpack.COne.Inner
IOne io = new Inner();
^
1 error
Но в книге говорится, что я могу получить доступ к защищенным внутренним классам в производном классе. Где ошибка?