技术帖,如果你想了解多态(关于多态性的动态绑定问题,对象调用方法的执行过程),那你不防来看看.虽有钻牛角尖的嫌疑,但你一定会发现
关于多态性的动态绑定问题。对象调用方法的执行过程!
虽有钻牛角尖的嫌疑,但你一定会发现值得你发现的东西!!
虚拟机预先为每个类创建一个表,列出所有的方法签名和实际调用的方法:
对象调用方法的执行过程
1.首先,编译器察看调用方法的对象的声明类型和方法名,如果声明类型为Private、statie、final 构造器,则静态绑定,找出并调用方法。
2.否则编译器列出所有方法和继承为public的方法。
3.如果重载的话,编译器察看调用方法时的方法参数类型,发生重载解析。最后将获得被调用方法的方法签名(方法名+方法参数列表)。
4.如果被调用方法没重写,就直接搜索定义该方法签名的类的方法表,调用该方法。
5.如果被重写意味着这个方法可能是超类的方法也可能是子类的方法。虚拟机会从子类到超类搜索定义该方法签名的类,调用与调用该方法的对象的实际类型相匹配的类的方法表,找出并调用方法。
6.如果是使用super将会只是编译器调用超类的方法,搜索超类的方法表,找出并调用。
有钻牛角尖的嫌疑。还是希望大家都来用力顶哈。。 小弟在此谢谢啦~~
在此我先谢谢 jingweixml()!
PS:因本人能力和表达能力有限,小错误嘛!总是有得,大家不要因为怕伤了我的自尊心而指出,为了本人前途大家尽力说出,本人会虚心接受的,并加强改进·
------解决方案--------------------UP
------解决方案--------------------这个问题对于一个Cpper都是很简单的。
------解决方案--------------------xuexi
------解决方案--------------------不错,听君一席话又钩起偶对操作系统的回忆,这样联系起来感觉颇深
------解决方案--------------------帮顶而已
------解决方案--------------------学了JAVA1年 还是不怎么看得不懂2楼的话 ,管他是什么原理,能用就行
------解决方案--------------------学习,帮顶~~~
------解决方案--------------------太简单了。
------解决方案--------------------这谁也太会翻了吧,一年前的帖子。。。。。。