我想知道{。{1}}在java中的优势。
Dynamic Binding
我认为,这是一种继承策略。但有些人称之为动态绑定。这就是为什么,我认为它会有什么奇怪之处。
答案 0 :(得分:2)
它的好处是你的行为绑定到你调用它的对象的类型,而你不知道它实际上是什么类型。例如如果你通过动物,你不知道它是猫/狗/无论如何,但它会采取适当的行为,无论如何。
e.g。
public void makeNoise(List<Animal> animals) {
for (Animal a : animals) {
a.makeNoise();
}
}
对于上述收集品中的每只动物,上述适当地吠叫,喵喵叫,打嗝等。
我可以通过你的东西,并提供它遵守所需的Animal界面,如果/当我在稍后阶段引入新动物时,你的代码将继续工作。您的代码不需要知道Dog
如何咆哮的机制 - 只需通过适当的方法指示该行为。
注意:我认为通过使Animal
成为一个抽象类,上面的例子会更清晰。这样,您的行为将主要来自派生的具体类。
答案 1 :(得分:0)
答案 2 :(得分:0)
您举了一个简单的继承和多态的例子。类Dog
扩展Animal
覆盖其方法show()
。这意味着被调用的show()
的具体实现是在运行时确定的,取决于具体的动物类型。
这允许程序员创建逻辑,而不依赖于通过接口使用它的具体实现。在您的情况下,Dog
和Cat
可以提供show()
的不同实现,但调用者可以在不知道具体动物类型的情况下使用show()
。