当前位置: 首页 > 后端技术 > Java

JavaLateBinding

时间:2023-04-01 16:16:03 Java

Binding绑定是指将一个方法调用与该方法所在的类(方法体)关联起来。Early&static&compile-timebinding如果绑定是在程序执行之前进行的(如果有的话,由编译器和链接器实现),称为early/static/compile-timebinding早期绑定是面向过程语言中的默认绑定方法。这样做意味着编译器将生成对特定函数名称的调用,而运行时将此调用解析为要执行的代码的绝对地址。为什么它能解析到要执行的代码的绝对地址的调用呢?因为早期绑定在程序运行之前的编译过程中将方法调用与方法体相关联。但是在OOP(Oriented-ObjectProgramming)中,程序直到运行时才能确定代码的地址,所以当一个消息被发送到一个对象时,就需要使用其他的机制和方法调用机制,即,在运行时判断对象的具体类型,从而调用合适的方法,找到正确的方法执行主体,后期绑定机制因不同的编程语言而异。但无论如何,某种[类型信息]late&dynamic&runtimebinding必须放在对象中方法的代码直到运行时才能确定,编译器确保被调用方法的存在并对被调用的参数和返回值进行类型检查(不能提供这种保证的语言被称为弱类型),但不知道将要执行的确切代码为了执行后期绑定,Java将绝对地址调用替换为一小段特殊代码,该代码使用存储在对象中的信息来计算方法体的地址。因此,根据这一小段代码的内容,每个对象的行为都可能不同。当消息被发送到对象时,对象可以知道如何处理消息。后期绑定是在运行时根据具体的对象类型进行绑定。Java中的静态方法和final方法(私有方法就是final方法)都属于earlybinding。当然,子类不能重写final方法,成员变量(包括static/non-static)也属于早期绑定,除了static和final之外的方法属于后期绑定有了后期绑定,在向对象发送消息时,即使向上转型是所涉及的,对象只知道执行向上转换的正确行为是什么面向对象程序肯定包含向上转换某处,灵感来自模型转换的模具动作,向上这个词来自继承图的典型布局:通常基类在顶部,派生类在底部展开。因此,转化为基类就是在继承图中向上移动,即【向上转化】,因为这是将自己从必须知道确切类型的束缚中解放出来的关键