动态绑定

时间:2012-09-24 15:57:45

标签: java

我想知道{。{1}}在java中的优势。

Dynamic Binding

我认为,这是一种继承策略。但有些人称之为动态绑定。这就是为什么,我认为它会有什么奇怪之处。

3 个答案:

答案 0 :(得分:2)

它的好处是你的行为绑定到你调用它的对象的类型,而你不知道它实际上是什么类型。例如如果你通过动物,你不知道它是猫/狗/无论如何,但它会采取适当的行为,无论如何。

e.g。

public void makeNoise(List<Animal> animals) {
   for (Animal a : animals) {
      a.makeNoise();
   }
}

对于上述收集品中的每只动物,上述适当地吠叫,喵喵叫,打嗝等。

我可以通过你的东西,并提供它遵守所需的Animal界面,如果/当我在稍后阶段引入新动物时,你的代码将继续工作。您的代码不需要知道Dog如何咆哮的机制 - 只需通过适当的方法指示该行为。

注意:我认为通过使Animal成为一个抽象类,上面的例子会更清晰。这样,您的行为将主要来自派生的具体类。

答案 1 :(得分:0)

  1. Java中的静态绑定发生在Dynamic的编译时 绑定发生在运行时。
  2. private,final和static方法和变量使用static 绑定虚拟方法时由编译器绑定和绑定 在运行时基于运行时对象。
  3. 静态绑定使用Type(Java中的类)信息进行绑定 而动态绑定使用Object来解析绑定。
  4. 重载方法使用静态绑定绑定 重写的方法在编译期间被绑定。

答案 2 :(得分:0)

您举了一个简单的继承和多态的例子。类Dog扩展Animal覆盖其方法show()。这意味着被调用的show()的具体实现是在运行时确定的,取决于具体的动物类型。

这允许程序员创建逻辑,而不依赖于通过接口使用它的具体实现。在您的情况下,DogCat可以提供show()的不同实现,但调用者可以在不知道具体动物类型的情况下使用show()