这篇文章主要介绍“Java对象方法调用执行过程是怎样的”,在日常操作中,相信很多人在Java对象方法调用执行过程是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”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类中的方法,一次类推。
这样调用方法的开销十分的大,因此虚拟机为每个类都定义了一个方法表,其中列举了所有的方法名和签名,这样,真正调用方法时,虚拟机就直接朝朝这个表就可以了。
调用方法的几种方式
一般的,在Java语言中,调用方法有三种方式。
第一种
通过对象名.方法名进行调用,这是最普通的也是最常见的一种调用方式。
第二种
通过new关键字调用构造方法,这种是在实例化对象时使用的方式。
第三种
通过类名.方法名调用,当需要调用的那个方法为静态(有static的)方法时使用。配合实际操作,附如下例子:
到此,关于“Java对象方法调用执行过程是怎样的”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!