ebs*_*sbk 13 java inner-classes
阅读"Thinking in Java",我坚持参加ex:6 of Inner Classes章节.
练习6:(2)在自己的包中创建一个至少包含一个方法的接口.在单独的包中创建一个类.添加一个实现接口的受保护内部类.在第三个包中,继承自您的类,并在方法内部返回受保护内部类的对象,在返回期间向上转换为接口.
这是我的代码:
接口
package intfpack;
public interface IOne{
void f();
}
Run Code Online (Sandbox Code Playgroud)
具有实现接口的受保护内部类的类
package classpack;
import intfpack.*;
public class COne{
protected class Inner implements IOne{
public void f(){System.out.println("Inner class of COne");}
}
}
Run Code Online (Sandbox Code Playgroud)
从具有受保护内部类的类继承
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();
}
}
Run Code Online (Sandbox Code Playgroud)
Copmiler说下:
javac CTwo.java
CTwo.java:9: Inner() has protected access in classpack.COne.Inner
IOne io = new Inner();
^
1 error
Run Code Online (Sandbox Code Playgroud)
但是这本书说我可以在派生类中访问受保护的内部类.哪里出错?
您需要为以下内容定义public构造函数Inner class:
public class COne {
protected class Inner implements IOne{
public Inner() { }
public void f(){System.out.println("Inner class of COne");}
}
}
Run Code Online (Sandbox Code Playgroud)