类implement 接口Doer
Friend中实现了doYourThing
next.doYourThing();其实就是调用Friend.doYourThing()(理论可能不对,可以这样理解)

解决方案 »

  1.   

    public Friend(Doer next, boolean direct) {
            this.next = next;
            this.direct = direct;
        }
    对象的构造函数中需要对next作初始化,传入一个实现了接口Doer的对象。看样子,应该是后一个参数direct表示是否next已指向正确的对象。
      

  2.   

    哪个地方显示了实现接口Doer了呢?还有如果说是调用Friend.doYourThing()那为什么不写成private Friend next呢?
      

  3.   

    在类中实现了doYourThing()方法的定义,而且一定是要public的
      

  4.   

    接口不能实现接口对象,但是可以声明接口变量。
    next.doYourThing()调用的是构造函数中传递过来的对象的方法,该对象实现了Doer 接口。
      

  5.   

    Doer是接口,可能有很多会有一个或多个类都实现它。用private Doer next的话, 每个implement Doer的类的object都可以用来添加这个鍡链表中(从Friend的构造函数可以看出它是实现一个链表的功能)。
      

  6.   

    这种用法很常见啊,建议楼主看一下《JAVA与模式》,其中有一个规则叫做“依赖倒转原则”比较深入的讲解了这个用法。
      

  7.   

    这里只是定义了一个变量,而没有进行构造。就是说next是一个实现了doer接口的对象而这个对象的实例化还要调用new Friend(),或另外的实现接口的类的构造函数。而在实现接口的类里doYourThing();一定已经实现了。有些乱?这样说吧Friend(Doer next, boolean direct)里Doer next的意思就是说。要传入一个对象,该对象已经实现了Doer接口,至于具体类型编译器就不要管了,反正我这里只用接口定义的方法。