Java运行时绑定根究[Java编程]
本文“Java运行时绑定根究[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
运行时绑定也叫动态绑定,它是一种调用对象办法的机制.Java调用对象办法时,普通采取运行时绑定机制.
1.Java的办法调用历程
编译器查看对象的声明范例和办法名(对象变量的声明范例).通过声明范例找到办法列表.
编译器查看调用办法时供应的参数范例.
假如办法是private、static、final大概构造器,编译器便可以肯定调用那个办法.这是静态绑定.
假如不是上述情形,就要利用运行时(动态)绑定.在程序运行时,采取动态绑定意味着:虚拟机将调用对象实际范例所限定的办法.
2.运行时(动态)绑定的历程
虚拟机提取对象的实际范例的办法表;
虚拟机搜索办法签名;
调用办法.
注意,这里说的是对象的实际范例.即在多态的情形下,虚拟机可以找到所运行对象的真正范例.
3.在向上转型情形下的动态绑定示例
public class Father {
public void method() {
System.out.println("父类办法,对象范例:" + this.getClass());
}
}
public class Son extends Father {
public static void main(String[] args) {
Father sample = new Son();//向上转型
sample.method();
}
}
后果1:
父类办法,对象范例:class samples.Son
这个后果没有疑问,声明的是父类的引用(句柄),但精确的调用了子类的对象,调用method,在子类中没有该办法,所以去父类中探求到并调用之.
目前改正子类,重写(override)method办法.
public class Son extends Father {
public void method() {
System.out.println("子类办法,对象范例:" + this.getClass());
}
public static void main(String[] args) {
Father sample = new Son();//向上转型
sample.method();
}
}
后果2:
子类办法,对象范例:class samples.Son
这个后果也是意料之中的.调用method时,在子类中探求到了该办法,所以直接调用之.
以上是“Java运行时绑定根究[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |