在java中有-A关系

时间:2012-10-11 10:08:04

标签: java

public class Horse extends Animal {
    private Halter myHalter = new Halter();
    public void tie(LeadRope rope) {
        myHalter.tie(rope); // Delegate tie behavior to the
      // Halter object
    }
}

public class Halter {
    public void tie(LeadRope aRope) {
    // Do the actual tie work here
}
}

在这个例子中,Horse有一个Halter.Can我们可以像这样调用 myHalter.tie(rope);

public class Horse extends Animal {
    private Halter myHalter = new Halter();

        myHalter.tie(rope); // Without using the public void tie method

}

它出错了。我对此的解释是它不是main()方法,但任何人都可以用更好的方式解释它。

3 个答案:

答案 0 :(得分:1)

类体中除变量/字段声明之外的语句必须放入方法体构造函数初始化块。例如,如果您尝试编译此代码就可以了:

public class Horse {

    private Halter myHalter = new Halter();

    {
       myHalter.tie(new LeadRope());
    }
}

答案 1 :(得分:1)

你不能在类块中调用方法,你必须创建一个方法,而不是在方法体中调用方法,或者你可以在静态,实例或构造函数块中调用方法

答案 2 :(得分:1)

好的,试试这个......

- Has-A relationship称为Composition

public class Bathroom{

 Tub tub;


}


public class Tub{



}

- 我们可以说Bathroom有一个类型 Tub的引用,这意味着Bathroom有一个类型为tub的实例变量