本帖最后由 张凯 于 2012-7-24 14:48 编辑
有一个编程题:在第一个包中创建一个接口;再第二个包中创建一个类,并包含一个protected的内部类实现那个接口;在第三个包中继承这个类,并在一个方法中返回该pretected内部类的对象,并返回的时候向上转型为第一个包中的接口类型.
我写的代码如下:
第一个包:- package ch10.package01;
- public interface QQ {
- void f();
- void u();
- }
复制代码 第二个包:- package ch10.package02;
- import ch10.package01.QQ;
- public class Outer01 {
- protected class Inter01 implements QQ{
- public void f(){
- System.out.println("Inter01.f()");
- }
- public void u(){
- System.out.println("Inter02.u()");
- }
- }
- public static void main(String[] args){
- Outer01 o=new Outer01();
- }
- }
复制代码 第三个包:- package ch10.package03;
- import ch10.package02.Outer01;
- import ch10.package01.QQ;
- public class Outer02 extends Outer01{
- public QQ qq(){
- return new Inter01();
- }
- }
复制代码 问题在于return new Inter01();这句话提示错误
The constructor Outer01.Inter01() is not visible
虽然内部类是protected的,但Outer02 extends Outer01 为什么还是不可以访问呢? |