`
younglibin
  • 浏览: 1207698 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java的overload(重载)--在JVM中的实现--->静态分派

 
阅读更多

在 java 虚拟机中,方法的调用并不等于方法执行,方法调用阶段唯一的任务就是确定被调用的方法的阿布呢不能,不涉及方法内部的棘突执行过程。一切方法调用在class文件里面存储的都只是符号引用,不是方法在实际运行时内存布局中的入口地址。

 

JVM在解析时, 在调用目标程序代码写好、编译器进行编译时就必须确定下来;

 

在java中, 符合“编译期可知,运行期不可变” 这个要求的方法主要有:静态方法(与类型直接关联)和私有方法(外部不可访问),这些方法都不能通过继承或者重写来修改,因此他们在类加载阶段进行解析。

 

与上边对应的 就是在Java虚拟机里边提供了四条方法调用字节码指令:

1.invkestatic:调用静态方法

2.invokespecial:调用实例构造器<init>方法、私有方法和父类方法

3.invokevirtual:调用所有虚方法

4.invokeinterface:调用接口方法

 

”编译期可知,运行期不可变“ 这类方法 只能被 invokestatic 和 invokespecial 指令调用,包含:

静态方法、私有方法、实例构造器、父类方法。

 

解析调用是个静态过程,编译期间就完全确定了。

分派调用测可能是静态也可能是动态的,可以分为单分派和多分派这样就有了:

 

静态单分派

静态多分派

动态单分派

动态多分派

 

 

静态分派:(overload)重载

 

动态分派:(override) 重写

 

 

待续....................

 

分享到:
评论

相关推荐

    java-c语法7---method-overload---马克-to-win java视频

    java语法 method overload 马克-to-win java视频 方法 重载

    重载---马克-to-win java视频

    重载 马克-to-win java视频 overload 函数的详细介绍

    Java-Interview-Question.pdf

    在Java面试中,通常会涉及一系列的基础知识点和概念,以考察应聘者是否具备Java编程的扎实基础和对面向对象编程的深入理解。以下是根据提供的文件内容整理的Java知识点详解: ### Java语言特点 Java是一种面向对象...

    PyPI 官网下载 | python-overload-0.0.1.tar.gz

    本文将深入探讨`python-overload-0.0.1.tar.gz`这个压缩包中的`overload`库,了解它的功能、使用方法以及在实际编程中的应用。 `overload`库是Python类型注解的一个扩展,主要用于提供函数重载功能。在静态类型语言...

    AIC的Java课程1-6章

    第5 版 清华大学出版社&lt;br&gt; “SCJP学习指南” 人民邮电出版社&lt;br&gt; “Java 编程思想” 第3版 机械工业出版社&lt;br&gt; 教学内容和要求&lt;br&gt;知识点 重要程度 使用频度 难度&lt;br&gt;Java 入门 高 中 易&lt;br&gt;变量和运算符 高 ...

    JAVA面试题---基础

    Java通过方法重写(Override)和方法重载(Overload)实现多态。 11. **接口**:接口是一种完全抽象的类,只能包含静态常量和抽象方法。它用于实现多重继承和定义合同。 12. **异常处理**:Java使用try-catch-...

    Delphi7.完美经典.part1

    &lt;br&gt;&lt;br&gt;目录 : &lt;br&gt;第0章 认识Delphi &lt;br&gt;&lt;br&gt;0-1 前言 &lt;br&gt;0-2 Delphi简介 &lt;br&gt;0-3 进入Delphi7 &lt;br&gt;0-4 退出Delphi &lt;br&gt;&lt;br&gt;第1章 常用的窗口工具 &lt;br&gt;&lt;br&gt;1-1 窗体(Form) &lt;br&gt;1-2 代码编辑器(Code Editor) ...

    java面试宝典-----面试会用到哦

    在Java编程语言中,面试通常会涵盖许多核心概念和技术,以下是一些常见的面试问题及其详细解释: 1. **一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?** Java 源文件可以包含多个类,但只能...

    Java知识总结--CoreJava.doc

    - Overload(重载)在同一类中定义了多个同名方法,但参数列表不同,可以改变返回值类型。 - Override(重写)发生在父类与子类之间,子类重写父类的具有相同方法名、参数列表和返回类型的方法。 9. **冒泡排序**...

    JAVA方法的定义和方法的重载Overload.docx

    Java 方法的定义和方法的重载 Overload Java 方法是 Java 编程语言的基本组成部分之一。方法是解决问题的多行代码的集合,给予一个名字,以便多次使用。方法的定义和方法的重载是 Java 编程语言的基础知识,本文将...

    JAVA基础-----面试宝典

    - **Overload**:方法重载,在同一个类中定义多个同名方法,但参数列表不同。 - **Override**:方法重写,在子类中重写父类的方法,实现相同的名字和参数列表,但行为不同。 ### 22. Set 集合的特点 - `Set` 集合...

    java基础--3.面向对象-1

    在Java中,多态主要通过接口(Interface)和抽象类(Abstract Class)以及方法的覆盖(Override)和重载(Overload)来实现。这意味着一个父类型的引用可以指向其子类型对象,调用的方法会根据实际的对象类型动态...

    java面试题-解密版

    - **Overload**:方法重载,在同一个类中定义多个同名但参数不同的方法。 - **Override**:方法重写,子类重新定义父类的方法。 - Overloaded的方法可以改变返回值类型。 #### 16. Char与中文汉字 - `char`可以...

    IOS应用源码——nevyn-overload-0.3-0-gae3b7f5.zip

    【标题】"IOS应用源码——nevyn-overload-0.3-0-gae3b7f5.zip" 提供的是一份iOS应用的源代码,版本号为0.3,标识符为gae3b7f5。这个压缩包很可能包含了一个完整的iOS项目,开发者可能在其中实现了特定的功能或者用于...

    JAVA面试题-基础部分3

    - **多态**:同一接口或基类的不同实例可以表现出不同的行为,主要通过方法重写(override)和方法重载(overload)实现。 - **抽象类与接口**:抽象类用于定义共同接口,接口则用于完全解耦。 3. **异常处理** ...

    Override,Overload,Overwrite的区别---马克-to-win Java视频

    Override Overload Overwrite 马克-to-win Java视频

    JAVA面试--葵花宝典完整版

    - Overload(重载):在同一个类中,方法名相同但参数列表不同(参数个数、类型或顺序不同)。 - Override(重写):子类中定义与父类相同的方法名、返回类型和参数列表,用于扩展或修改父类功能。 10. Final类的...

Global site tag (gtag.js) - Google Analytics