也许我在java fondamental理解方面存在严重的差距。在下面的代码中,我无法理解getLength方法如何计算行走长度。为什么回想起自己的尾巴?
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);
}
}
答案 0 :(得分:1)
您似乎正在创建自己的链接列表,getLength()
方法遍历整个列表,返回完整的总和。
顺便说一下,请处理此网站的代码格式,尤其是缩进。
答案 1 :(得分:0)
根据我的判断计算总长度。
return 1+tail.getLength();
这似乎表示当前对象的步行长度为1
,并且它将其添加到任何tail
步行长度。这给出了总长度。
注意 :无论是谁写的,都应该看一下Java Naming Conventions。