也許我在java fondamental理解方面存在嚴重的空白。在下面的代碼中,我無法理解getLength方法如何計算步行長度。爲什麼回想起尾巴?理解java方法的問題
class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public static void main(String argv[]) {
Point p1 = new Point(0, 0);
// Walk w1 = new Right(new Down(new Left(new Up(new Stop()))));
Move w2 = new Left(new Left(new Up(new Stop())));
// Walk w3=new Right(new Stop());
System.out.println(w2.tail);
}
}
abstract class Walk {
public abstract boolean isStop();
public abstract int getLength();
}
class Stop extends Walk {
@Override
public boolean isStop() {
return true;
}
@Override
public int getLength() {
return 0;
}
}
abstract class Move extends Walk {
Walk tail;
@Override
public int getLength() {
return 1 + tail.getLength();
}
Move(Walk tail) {
this.tail = tail;
}
@Override
public boolean isStop() {
return true;
}
}
class Right extends Move {
public Right(Walk tail) {
super(tail);
}
}
class Left extends Move {
public Left(Walk tail) {
super(tail);
}
}
class Up extends Move {
public Up(Walk tail) {
super(tail);
}
}
class Down extends Move {
public Down(Walk tail) {
super(tail);
}
}
因此只存在Move的一個實例? –
@StefanoMaglione:不,Move的許多實例存在,並且它們在鏈接列表中彼此連接。 –
它們在哪個變量中連接,以及變量尾部如何包含此鏈? –