可能重复:
How to make an outer class inherited from an inner class
我想知道我可以继承其他类内部类的一些类吗?
我想在代码下面运行,但是我收到了错误。
public class Computer {
int model;
Computer(int i) {
model = i;
}
public class HardDrive {
int size;
public HardDrive(int i) {
size = i;
}
public HardDrive() {
size = 40;
}
}
}
主要是:
class SCSI extends Computer.HardDrive {
SCSI(Computer c) {
c.super(80);
}
}
我收到此错误:
没有封闭的类型实例 inner.inherit.Computer在范围
答案 0 :(得分:0)
似乎对我来说很好(See)。确保SCSI与计算机位于同一名称空间中,否则使用
class SCSI extends <namespace>.Computer.HardDrive {
答案 1 :(得分:0)
如果SCSI
不是Computer
中的另一个内部类,则必须使HardDrive
成为静态。
答案 2 :(得分:0)
我认为如果你让HardDrive成为内部静态类,它应该可行。原因是“普通”内部类与封闭类的实例有关(例如,您可以通过在Computer.this
中编写HardDrive
来访问计算机的“this”,这就是为什么编译器希望计算机实例在范围内。如果将HardDrive设为静态,则内部类和外部类的实例之间不存在此类连接,因此您可以无限制地继承它。