0
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 has-a Halter.Can we call myHalter.tie(rop); このような:

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

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

}

エラーが発生します。これに対する私の説明は、それは main() メソッドではなく、誰でもより良い方法で説明できるということです。

4

3 に答える 3

1

クラス本体の変数/フィールド宣言以外のステートメントは、メソッド本体コンストラクター、または初期化ブロックに配置する必要があります。たとえば、次のコードをコンパイルしようとしても問題ありません。

public class Horse {

    private Halter myHalter = new Halter();

    {
       myHalter.tie(new LeadRope());
    }
}
于 2012-10-11T10:11:21.013 に答える
1

クラスブロックでメソッドを呼び出すことはできません。メソッドを作成する必要があり、メソッドの本体でメソッドを呼び出すことができます。または、静的、インスタンス、またはコンストラクターブロックでメソッドを呼び出すことができます

于 2012-10-11T10:12:35.013 に答える
1

わかりましたこれを試してください....

- Has-A relationshipとして知られていCompositionます。

public class Bathroom{

 Tub tub;


}


public class Tub{



}

-Bathroom typeの参照がある Tub、つまりtypeBathroomインスタンス変数があると言えますtub

于 2012-10-11T10:13:25.787 に答える