gpt4 book ai didi

java - 继承时无法访问 protected 内部类

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:00 24 4
gpt4 key购买 nike

通读“Thinking in Java”,我卡在了内部类章节的 ex:6 中。


练习 6:(2) 在其自己的包中创建一个至少包含一种方法的接口(interface)。创建一个类在一个单独的包中。添加一个实现该接口(interface)的 protected 内部类。在一个第三个包,从你的类继承,并在一个方法中,返回一个对象 protected 内部类,在返回期间向上转换到接口(interface)。


这是我的代码:

IOne.java

界面

package intfpack;
public interface IOne{
void f();
}

Cone.java

具有实现接口(interface)的 protected 内部类的类

package classpack;
import intfpack.*;
public class COne{
protected class Inner implements IOne{
public void f(){System.out.println("Inner class of COne");}
}
}

CTwo.java

从 protected 内部类继承

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 接下来说:

javac CTwo.java
CTwo.java:9: Inner() has protected access in classpack.COne.Inner
IOne io = new Inner();
^
1 error

但是书上说我可以访问派生类中 protected 内部类。哪里错了?

最佳答案

错误消息提示构造函数被保护,而不是类。但是您没有在发布的代码中明确定义构造函数。在这种情况下,according to the JLS ,默认构造函数将受到保护(与类相同)。

关于java - 继承时无法访问 protected 内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1487734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com