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

 更新时间:2022年02月15日 14:44:06   作者:IBLiplus  
这篇文章主要介绍了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可变参数当做数组处理的方法示例

    java可变参数当做数组处理的方法示例

    这篇文章主要介绍了java可变参数当做数组处理的方法,结合实例形式分析了java可变参数当做数组处理相关原理、步骤与操作注意事项,需要的朋友可以参考下
    2019-09-09
  • JAVA中数组从小到大排序的2种方法实例

    JAVA中数组从小到大排序的2种方法实例

    JAVA中在运用数组进行排序功能时一般有多种解决方案,下面这篇文章主要给大家介绍了关于JAVA中数组从小到大排序的2种方法,文中都给出了详细的实例代码,需要的朋友可以参考下
    2023-03-03
  • Java注解的简单入门小案例

    Java注解的简单入门小案例

    这篇文章主要介绍了Java注解的简单入门小案例,注解是干什么的?怎么使用?注解的简单用法,需要的朋友可以参考下
    2023-04-04
  • Java利用POI读写Excel文件工具类

    Java利用POI读写Excel文件工具类

    这篇文章主要为大家详细介绍了Java利用POI读写Excel文件的工具类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • 探究Java中Integer缓冲区底层原理

    探究Java中Integer缓冲区底层原理

    本文将会给大家讲一讲Integer这个包装类的底层原理。在现在的就业环境下,我们需要知其然,还要知其所以然,才能更好地满足就业需求,感兴趣的小伙伴可以参考阅读
    2023-05-05
  • SpringBoot2零基础到精通之数据库专项精讲

    SpringBoot2零基础到精通之数据库专项精讲

    SpringBoot是一种整合Spring技术栈的方式(或者说是框架),同时也是简化Spring的一种快速开发的脚手架,本篇我们来学习如何连接数据库进行操作
    2022-03-03
  • Java 如何读取Excel格式xls、xlsx数据工具类

    Java 如何读取Excel格式xls、xlsx数据工具类

    这篇文章主要介绍了Java 如何读取Excel格式xls、xlsx数据工具类的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java 中 Class Path 和 Package的使用详解

    Java 中 Class Path 和 Package的使用详解

    这篇文章主要介绍了Java 中 Class Path和Package的使用详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • Spring Boot项目启动报错Unable to start web server解决方法

    Spring Boot项目启动报错Unable to start web server解决方法

    这篇文章主要给大家介绍了关于Spring Boot项目启动报错Unable to start web server的解决方法,错误内容大概的意思是未能加载嵌入的供web应用加载的空间,是因为缺少ServletWebServerFactorybean,需要的朋友可以参考下
    2024-07-07
  • java查找图中两点之间所有路径

    java查找图中两点之间所有路径

    这篇文章主要为大家详细介绍了java查找图中两点之间所有路径,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01

最新评论