动态绑定,new出来的时候叫做动态,所以动态绑定就是在new出对象的时候和该对象进行了绑定。在实例当中,new出来谁就调用谁的方法。
下面举一个例子:
class Animal{
private String name;
Animal(String name){this.name = name;}
public void enjoy(){
System.out.println("叫声···");
}
}
class Cat extends Animal {
private String eyesColor;
Cat(String n, String c){super(n);eyesColor = c;}
public void enjoy(){
System.out.println("猫叫声···");
}
}
class Dog extends Animal{
private String furColor;
Dog(String n,String c){super(n);furColor = c;}
public void enjoy(){
System.out.println("狗叫声···");
}
}
class Lady{
private String name;
private Animal pet;
Lady(String name,Animal pet){this.name = name; this.pet = pet;}
public void myPetEnjoy(){pet.enjoy();}
}
public class Test{
public static void main(String args[]){
Cat c = new Cat("catname","blue");
Dog d = new Dog("dogname","black");
Lady l1 = new Lady("11",c);
Lady l2 = new Lady("12",d);
l1.myPetEnjoy();
l2.myPetEnjoy();
}
}
如上面的代码显示,结果调用是子类猫和狗的方法,而不是父类的方法。

上面的图向下的箭头,父类没有指向父类的方法,而是指向了子类的方法,这个指针只有new出来的谁,再指向谁。这就是动态绑定。
本文通过一个具体例子详细解析了Java中的动态绑定概念。当通过父类引用调用子类的覆盖方法时,Java运行时会根据实际对象类型决定调用哪个方法,这便是动态绑定的核心。文章展示了如何通过实例化不同子类并调用其特定方法来实现这一过程。
220





