如何从内部类继承?

时间:2011-04-19 19:07:21

标签: java inner-classes

  

可能重复:
  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在范围

3 个答案:

答案 0 :(得分:0)

似乎对我来说很好(See)。确保SCSI与计算机位于同一名称空间中,否则使用

class SCSI extends <namespace>.Computer.HardDrive {

答案 1 :(得分:0)

如果SCSI不是Computer中的另一个内部类,则必须使HardDrive成为静态。

答案 2 :(得分:0)

我认为如果你让HardDrive成为内部静态类,它应该可行。原因是“普通”内部类与封闭类的实例有关(例如,您可以通过在Computer.this中编写HardDrive来访问计算机的“this”,这就是为什么编译器希望计算机实例在范围内。如果将HardDrive设为静态,则内部类和外部类的实例之间不存在此类连接,因此您可以无限制地继承它。