上传型对象
对于一个引用类型的变量,java编译器会按照它所声明的类型来处理。运行时java虚拟机会按照它实际引用的类型来处理。
在运行时环境中 对于一个引用类型的变量。java虚拟机会采用不同的绑定机制:
对于一个实例方法。java虚拟机会将它与实际引用的对象的方法绑定.这属于动态绑定,因为是在运行时由java虚拟机动态决定的。 //这里是指"引用类型的变量"与"实际引用的对象的方法绑定",还是说"这个引用类型的变量指向---当前实际对象里的指针与方法的绑定",还是什么意思
------解决方案--------------------LZ好像很拘泥于文字
对于一个实例方法。java虚拟机会将它与实际引用的对象的方法绑定.这属于动态绑定
这里是说,当你访问一个实例的方法时,栈指针就会转到该方法的入口地址,如果该方法不是抽象方法,那么该入口地址就是实际的方法的栈地址了,系统会接着从该地址执行;如果该方法是抽象方法,那么该地址实际上存的是另一个入口地址,另一个入口地址才是实际对象的方法的入口地址,于是栈指针就会转向该实际对象的方法的入口地址并继续执行。LZ如果有兴趣,可以找本C++的教材,看看VTable虚拟表就知道。
所以应该是指"引用类型的变量"与"实际引用的对象的方法绑定",中间通过VTable绑定,也就是抽象方法的入口地址并非实际实例的方法的入口地址,而是该地址里保存了实际实例的方法的入口地址,系统读出该地址后把栈指针指向该地址。
大概这么个意思吧。