JVM方法的动态与静态绑定机制
在运行时的环境中,通过引用类型变量来访问所引用对象的方法和属性是,JVM采用以下绑定机制:
- 实例方法与引用变量实际引用的对象的方法绑定,这种绑定属于动态绑定,因为是在运行时由JVM动态决定的;
- 静态方法与引用变量所声明的类型的方法绑定,这种绑定属于静态绑定,因为实际上在编译阶段就已经做了绑定;
- 成员变量(包括静态变量和实例变量)与引用变量所声明的类型的成员变量绑定,这种绑定属于静态绑定,因为实际上在编译阶段就已经做了绑定。
例如,以下这段代码:
Base who = new Sub(); //who被声明为Base类型,引用Sub实例 System.out.println("who.var="+who.var); //打印Base类的var变量 System.out.println("who.staticVar="+who.staticVar); //打印Base类的staticVar变量 who.method(); //打印Sub实例的method()方法 who.staticMethod(); //打印Base类的staticMethod()方法
输出结果:
who.var=BaseVar who.staticVar=StaticBaseVar Sub method Static Base method
相关推荐
一支菜鸟 2020-07-06
bulargyzone 2020-10-26
csdnxingyuntian 2020-10-19
Locksk 2020-10-12
liufangbaishi0 2020-09-23
darlingtangli 2020-09-10
lxttiger 2020-08-18
coolrainman 2020-07-28
一支菜鸟 2020-07-27
zhouxihua0 2020-07-27
nangongyanya 2020-07-26
chenkai00 2020-07-26
voiletbin 2020-07-26
ChenRuiyz 2020-07-26
pbaabc 2020-07-23
nbfcome 2020-07-19
liufangbaishi0 2020-07-18
ChenRuiyz 2020-07-18
empireghost 2020-07-10