JAVA中的动态绑定机制

xiaoxiao2021-02-28  71

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ http://blog.csdn.net/xiaoduan_/article/details/79334347

动态绑定机制

多态的实现是通过向上类型转换和动态绑定机制来完成,向上转型实现了将子类对象向上转型为父类类型,而动态绑定机制能够识别出对象转型前的类型,从而自动调用该类的方法,二者相辅相成 动态绑定: 绑定就是将一个方法调用同一个方法所在的类链接在一起就是绑定,绑定分为静态绑定和动态绑定两种。 静态绑定:在程序运行之前进行绑定(由编译器和链接程序完成的)也叫做前期绑定 动态绑定:在程序运行期间有JVM根据对象的类型自动判断该调用哪一个方法,也叫做后期绑定 静态绑定的例子: 如有一类Human,他派生三个之子类Chinese类、American类和British类、三个子类中都重写了父类的speak()方法,在测试类中用静态绑定的方法调用speak()

Chinese c = new Chinese(); c.speak(); American a = new American(); a.speak(); British b = new British(); b.speak();

这种调用方式是在代码里指定的,编译时编译器就知道c调用的是Chinese的speak()方法 动态绑定的例子: 如果我们在测试类中做如下改动

Human[] human = new Human[5]; int n; for (int i = 0;i<human.length;i++){ n = (int)(Math,random()*3); switch(n){ case 0:human[i]=new Chinese();break; case 1:human[i]=new American();break; case 2:human[i] = new British();break; } } for(int i = 0;i<human.length;i++){ human[i].speak(); }

此时Human类随机生成Chinese等类的对象,编译器不能根据代码直接确定调用哪一个类中的speak方法,直到运行时才能确定,这就是动态绑定。

转载请注明原文地址: https://www.6miu.com/read-2623639.html

最新回复(0)