[Java]静态绑定与动态绑定
来源:互联网 发布:金融数据录入 编辑:程序博客网 时间:2024/05/16 14:49
程序绑定的概念:
比如:Parent p = new Children();
绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。
静态绑定:
在程序执行前方法已经被绑定(也就是说在编译过程中就已经知道这个方法到底是哪个类中的方法),此时由编译器或其它连接程序实现。
如果一个方法不可被继承或者继承后不可被覆盖,那么这个方法就采用的静态绑定。
java当中的方法只有final,static,private和构造方法是前期绑定
动态绑定:
后期绑定:在运行时根据具体对象的类型进行绑定。
动态绑定的过程:
- 虚拟机提取对象的实际类型的方法表;
- 虚拟机搜索方法签名;
- 调用方法。
比如:Parent p = new Children();
其具体过程细节如下:
1:编译器检查对象的声明类型和方法名。
假设我们调用x.f(args)方法,并且x已经被声明为C类的对象,那么编译器会列举出C 类中所有的名称为f 的方法和从C 类的超类继承过来的f 方法。
2:接下来编译器检查方法调用中提供的参数类型。
如果在所有名称为f 的方法中有一个参数类型和调用提供的参数类型最为匹配,那么就调用这个方法,这个过程叫做“重载解析”。
3:当程序运行并且使用动态绑定调用方法时,虚拟机必须调用同x所指向的对象的实际类型相匹配的方法版本。
假设实际类型为D(C的子类),如果D类定义了f(String)那么该方法被调用,否则就在D的超类中搜寻方法f(String),依次类推。
JAVA 虚拟机调用一个类方法时(静态方法),它会基于对象引用的类型(通常在编译时可知)来选择所调用的方法。相反,当虚拟机调用一个实例方法时,它会基于对象实际的类型(只能在运行时得知)来选择所调用的方法,这就是动态绑定,是多态的一种。 0 0
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- java中动态绑定与静态绑定
- Java静态绑定与动态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- Java静态绑定与动态绑定
- java的动态绑定 与静态绑定
- Java静态绑定与动态绑定
- java 动态绑定与静态绑定
- java的动态绑定与静态绑定
- Java静态绑定与动态绑定
- java的动态绑定与静态绑定
- java的动态绑定与静态绑定
- Java的动态绑定与静态绑定
- Java静态绑定与动态绑定
- android学习记录1:android自定义Dialog
- ThinkPHP源码分析----异常处理
- HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
- hibernate中hql语句注意点
- 归并排序
- [Java]静态绑定与动态绑定
- HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
- 文章标题
- 输出整数的每一位,利用函数实现
- 【Leetcode】217. Contains Duplicate
- 蓝桥-算法-队列
- HTML5之SVG 2D入门4—笔画与填充
- 数据挖掘-diabetes数据集分析-糖尿病病情预测_线性回归_最小平方回归
- SpringMVC学习笔记(一)使用IntelliJ IDEA开发Spring MVC HelloWorld