Java对象方法的调用执行过程详解

网友投稿 419 2022-08-28


Java对象方法的调用执行过程详解

目录对象方法的调用执行过程调用方法的几种方式第一种第二种第三种

对象方法的调用执行过程

编译器查看对象的声明类型和方法名。假设调用x.f(param),隐式参数为x声明为C类对象,需要注意的是,有可能存在多个方法名为f,但是参数不同的方法,此时,编译器会一一列举C类中的所有方法名为f的方法和超类中访问属性为public的并且名字为f的方法。

接下来,编译器将查看调用方法时提供的参数类型。如果在所有名为f的方法中存在一个与提供的参数类型完全匹配,就选择这个方法,这个过程叫做“重载解析”。

如果是private方法、static方法、final方法或者是构造器,那么编译器就可以准确的知道应该调用那个方法,我们将这种调用方式为静态绑定,与此对应的是,调用的方法依赖于隐式参数的实际类型,并且在运行时实现动态绑定。比如,调用一个f(String)的方法。

当程序运行时,并且采用动态绑定调用方法,虚拟机一定调用与x所引用对象的类型最合适的那个类的方法。假设,x的实际类型是D,他是C的子类,如果子类D中定义了f(String)方法,就直接调用它,否则就搜索C类中的方法,一次类推。

这样调WDfNI用方法的开销十分的大,因此虚拟机为每个类都定义了一个方法表,其中列举了所有的方http://法名和签名,这样,真正调用方法时,虚拟机就直接朝朝这个表就可以了。

调用方法的几种方式

一般的,在java语言中,调用方法有三种方式。

第一种

通过对象名.方法名进行调用,这是最普通的也是最常见的一种调用方式。

第二种

通过new关键字调用构造方法,这种是在实例化对象时使用的方式。

第三种

通过类名.方法名调用,当需要调用的那个方法为静态(有static的)方法时使用。配合实际操作,附如下例子:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python requests请求中的异常总结(python能做什么)
下一篇:Python 字符串与二进制串的相互转换(python和java哪个更值得学)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~