您的位置:首页 > 运维架构 > Tomcat

简述分派

2019-08-25 21:32 1331 查看

这里所谓的分派指的是在Java中对方法的调用。Java 有三大特性:封装、继承、多态。分派是多态性的体现。那么所谓方法分派,就是虚拟机如何确定应该执行哪个方法! 

下面的概念都是基于继承环境下解释的 

分派 --- 分为静态分派和动态分派。

如有这样的两个类,其继承关系为 Cat extends Animal, 
在调用时这样调用

Animal tomcat = new Cat();

tomcat 变量它的静态类型就是 Animal ,它的动态类型就是 Cat 。

 

静态分派:

所有依赖静态类型来定位方法执行版本的分派,称之为静态分派。发生在编译时期,典型应用是方法重载。静态分派发生在编译时期,因此可以确定静态分配的动作实际不是由虚拟机执行的。简单来说 JVM在重载时(发生在编译阶段),是通过参数的静态类型来作为判断依据去找相关的执行方法的,以静态类型的方法为准。

 

 

动态分派:

在运行期根据实际类型确定执行方法的过程,典型应用是重写。是一种动态的概念。

重写时JVM选择哪个执行的方法,是根据变量的实际类型来判断的,执行实际类型的那个方法。

动态分派的实现是在方法区中建立方法表,如果子类没有重写父类的方法,则子类虚方法表中,该方法的入口地址,与父类指向相同,否则子类方法表中的地址会替换成指向子类重写的方法的入口地址。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java Tomcat