如何从派生类访问内部类构造函数?

时间:2014-11-03 01:45:32

标签: java constructor

对于以下Ocean班级,

public class Ocean {

    /**
     * Define any variables associated with an Ocean object here. These
     * variables MUST be private.
     */
    // width of an Ocean
    private final int width;
    // height of an Ocean
    private final int height;

    class Critter {

        /**
         * Defines a location of a Critter in an Ocean.
         */
        Point location;

        public Critter(int x, int y) {
            location = new Point(x,y);
        }

        public Point getLocation() {
            return location;
        }
    }

    private Critter[][] oceanMatrix;
}

我想从类Critter构造函数的下面访问上面的类中的构造函数Shark

class Shark extends Ocean implements Behaviour {

    public Shark(int x, int y, int hungerLevel) {
        super(x,y);
    }
}

如何从Critter类构造函数访问Shark类构造函数?

2 个答案:

答案 0 :(得分:6)

好像你应该扩展Critter而不是Ocean:

class Shark extends Ocean.Critter implements Behaviour{
...
    public Shark(int x, int y, int hungerLevel){
        super(x,y);

    }
...
}

为了实现这一点,Critter需要成为一个静态的内部类。我不知道这个设计有多少是你的,但内部类应限于彼此强烈依赖的类,这不是这里的情况。如果可以的话,把小动物带出海洋。

答案 1 :(得分:3)

只要SharkOcean位于同一个包中,并且您将static修饰符添加到Critter的类声明中,您应该能够访问Critternew Ocean.Critter()

。{