留坑-面试-动态绑定

来源:互联网 发布:闭关锁国知乎 编辑:程序博客网 时间:2024/06/10 13:33

今天, 一面试官问我, 多态的实现原理. 于是我想到「动态绑定」.
但是, 我却无法理解, 什么叫「动态绑定」 . 常规的理解, 就是 类型的绑定是动态的. 但我想要了解的是, 这种行为为什么要强调?

1.「运行期」和「编译期」, 这两个概念很重要

参考: 编译时与运行时

这就是为什么四人帮(Gang of Four)的设计模式里更倾向于使用组合而不是继承的原因。面试者会在你的答案里着重关注这几个词语——“耦合”,“静态还是动态”,以及“发生在编译期还是运行时”。运行时的灵活性可以通过组合来实现,因为类可以在运行时动态地根据一个结果有条件或者无条件地进行组合。但是继承却是静态的。

2.「动态语言」和「静态语言」的差别.

参考 : 百度百科

而静态类型语言的类型判断是在运行前判断(如编译阶段),比如C#、java就是静态类型语言,静态类型语言为了达到多态会采取一些类型鉴别手段,如继承、接口,而动态类型语言却不需要,所以一般动态语言都会采用dynamic typing,常出现于脚本语言中.需要明确说明一点,那就是,是不是动态类型语言与这门语言是不是类型安全的完全不相干的,不要将它们联系在一起!

我认为, 为什么要强调 动态绑定, 其实就是因为编译器编译成字节码, 为了字节码的重用和模块的独立, 所以才不转换类型, 所以才导致我们要分编译时和运行时, 这两个状态.

而多态恰好要用运行时= = 所以才顺便问吧.. 现在的我认为没多大意义.

0 0
原创粉丝点击