留坑-面试-动态绑定

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

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

参考: 编译时与运行时

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

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

参考 : 百度百科

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值