理解java方法的问题

时间:2014-02-15 16:10:31

标签: java

也许我在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);
    }
}

2 个答案:

答案 0 :(得分:1)

您似乎正在创建自己的链接列表,getLength()方法遍历整个列表,返回完整的总和。

顺便说一下,请处理此网站的代码格式,尤其是缩进。

答案 1 :(得分:0)

根据我的判断计算总长度。

return 1+tail.getLength();

这似乎表示当前对象的步行长度为1,并且它将其添加到任何tail步行长度。这给出了总长度。

注意 :无论是谁写的,都应该看一下Java Naming Conventions