gpt4 book ai didi

java - Bates 和 Sierra java scjp 第 2 章有一个

转载 作者:行者123 更新时间:2023-11-30 11:39:10 26 4
gpt4 key购买 nike

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 类中的 tie 方法是否覆盖了 Halter 类中的 tie 方法?为什么tie方法声明和签名几乎一模一样?

最佳答案

不,它没有覆盖 Halter 中的方法,因为 Horse 没有扩展 Halter。

这是一个委托(delegate)示例(如评论中所述)。也可能是 Facade 模式(将所有马业务放在一个地方,即使它可以通过直接遍历所有其他类来完成)。

这就是IS-A和HAS-A关系的区别。马有笼头(但它不是笼头)。

Why is the tie method declaration and signature almost exactly the same?

因为他们做同样的事情:将接收器系在牵引绳上。

碰巧,您可以将缰绳和马拴在绳子上。但在其他方面,它们是完全不同的动物(实际上,只有其中一种是动物)。

有些人会争辩说这可以在 Tieable 接口(interface)中抽象出来。然后调用代码可以将铅绳系在马匹和缰绳(以及可能的其他东西)上,而无需了解任何一个。

关于java - Bates 和 Sierra java scjp 第 2 章有一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13410374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com