对于以下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
类构造函数?
答案 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)
只要Shark
与Ocean
位于同一个包中,并且您将static
修饰符添加到Critter
的类声明中,您应该能够访问Critter
与new Ocean.Critter()