随笔分类 -  多态

1
摘要:多态是语言对可变性的支持 阅读全文
posted @ 2022-05-21 14:22 zzfx 阅读(19) 评论(0) 推荐(0) 编辑
摘要:继承多态是运行时行为 和运行时(类型)动态绑定、(方法)动态路由相关 阅读全文
posted @ 2022-05-21 13:58 zzfx 阅读(17) 评论(0) 推荐(0) 编辑
摘要:Ability of an organism to take different shapes is polymorphism in bio world. A simplest definition in computer terms would be, handling different dat 阅读全文
posted @ 2019-06-05 11:20 zzfx 阅读(399) 评论(0) 推荐(0) 编辑
摘要:意义明确的东西不需要解释;只有抽象和含糊的东西才需要解释。 一、解释的含义 语言的灵活性:动态、多态 是对由语言的灵活性产生的(抽象类型、动态类型)多样性和不确定性的的解释; 只有对这些多态、动态做出合理的解释才能有正确的行为; 这种解释更多是多态和动态函数调用的解释机制: id objc_msgS 阅读全文
posted @ 2019-05-31 14:25 zzfx 阅读(269) 评论(0) 推荐(0) 编辑
摘要:多态:抽象类型可以泛化为具有不同行为的具体类型;在运行时根据类型做出不同的行为解释; 动态:语言元素的结构和行为可以在运行时修改; 多态需要运行时的解释执行; 多态需要在运行时获取类型和行为信息从而进行修改; 动态是将可修改范围由数据扩展到指令区; 动态的本质:一切皆数据、一切皆可修改。 二者都需要 阅读全文
posted @ 2019-03-26 21:13 zzfx 阅读(301) 评论(0) 推荐(0) 编辑
摘要:多态的本意:是抽象类型具体实现的多样化; 然后对具体类型的行为,作出或相同或不同的解释; 多态是一个类型理论的名词;对抽象类型的行为作出了解释; 抽象类型的指代作用举例: 这个牛是一头白牛,这个牛(这头白牛)........ The most commonly recognised major cl 阅读全文
posted @ 2019-03-25 18:41 zzfx 阅读(325) 评论(0) 推荐(0) 编辑
摘要:两个方面: 1、抽象类型的具体化; 2、方法调用的解释 同一个接口方法调用在运行时,针对不同的抽象类型具体化变量输入,具有不同的解释; 解释机制: 编译器插入:查找、绑定、执行; 运行时解释:查找、绑定、执行;对全部消息调用进行解释? 同一个接口函数在接收到不同的接口实现时,存在不同的解释; 阅读全文
posted @ 2019-03-25 18:06 zzfx 阅读(233) 评论(0) 推荐(0) 编辑
摘要:类型的内存模型的3个问题: 1、包含什么:附加信息 2、怎么布局:内存对齐 3、使用场景:怎么使用附加信息 一、包含什么? 除了包含结构类型的显式成员变量外,类型内存模型需要解决附加信息的引入问题 1、附加信息(Opaque)有哪些: 类型信息、函数信息、继承信息、内存计数等; 2、为什么有附加信息 阅读全文
posted @ 2019-03-22 17:16 zzfx 阅读(358) 评论(0) 推荐(0) 编辑
摘要:面向多态编程是面向抽象编程; 多态的本质是抽象; 一、多态的分类: 1、由函数到方法,隐藏缺省参量从而实现抽象;面向接口与继承; 2、泛型:参量化类型抽象出共同的结构和行为; 3、高阶函数:抽象出共同的基础操作; 4、运行时类型信息; 二、多态的支持系统分为两类: 1、类型支持; 2、函数调用的解释 阅读全文
posted @ 2019-03-22 16:35 zzfx 阅读(229) 评论(0) 推荐(0) 编辑
摘要:swift class的虚函数表、扩展、@objc修饰的研究 工具: swiftc -emit-sil BaseClass.swift | xcrun swift-demangle > ClassFunc.silgen cat ClassFunc.silgen 目标: 1、@objc和@objc d 阅读全文
posted @ 2019-03-19 19:34 zzfx 阅读(1051) 评论(0) 推荐(0) 编辑
摘要:函数的绑定 动态绑定的特征:参量中包含接口类型或继承类型的父类型: 参量中没有抽象类型或继承类型的函数是静态绑定的。 动态函数的调用,包含两个步骤:1、查找(绑定);2、调用; 函数动态绑定的支持: 1、编译器支持:虚函数表机制;编译器插入代码; 2、运行时支持:oc的派发机制;运行时插入代码; 阅读全文
posted @ 2019-03-15 19:38 zzfx 阅读(133) 评论(0) 推荐(0) 编辑
摘要:一、多态的本质 多态的本质:同一函数接口在接受不同的类型参量时表现出不同的行为: 不同对象能够调用同一接口,是因为它们含有统一的抽象纬度:接口; 同一函数能够接受不同对象的调用,是因为函数的参量是一个抽象类型(接口); 环境变量(主体类型)作为接口函数的特殊输入对接口的实现起着决定性的作用; 同一个 阅读全文
posted @ 2019-03-14 17:40 zzfx 阅读(357) 评论(0) 推荐(0) 编辑
摘要:scalaz功能基本上由以下三部分组成: 1、新的数据类型,如:Validation, NonEmptyList ... 2、标准scala类型的延伸类型,如:OptionOps, ListOps ... 3、通过typeclass的随意多态(ad-hoc polymorphism)编程模式实现的大 阅读全文
posted @ 2019-03-01 19:47 zzfx 阅读(282) 评论(0) 推荐(0) 编辑
摘要:运行时系统包含两个系统: 1、运行时类型系统:内省、反射; 2、运行时派发(调用、绑定、消息路由、上下文绑定)系统; 动态派发体统依赖于运行时类型系统; 对数据结构+算法 分别作出了规范; 运行时系统是一个解释系统。 阅读全文
posted @ 2018-11-14 18:30 zzfx 阅读(247) 评论(0) 推荐(0) 编辑
摘要:动态语言关于类型和结构的功能,是的该语言天然具有解释器的功能。 将平凡数据解释为语言兼容结构--类型映射; 将功能字符串解释为函数执行--功能热更新; 将功能字符串桥接为寄生语言执行--oc<->js; 将已有的第三方(不可物理修改)功能重新解释执行--方法修改; 将已存在的类型解释为新的类型 is 阅读全文
posted @ 2018-11-14 17:13 zzfx 阅读(152) 评论(0) 推荐(0) 编辑
摘要:Normally, in a typed language, the dispatch mechanism will be performed based on the type of the arguments (most commonly based on the type of the rec 阅读全文
posted @ 2018-09-19 12:14 zzfx 阅读(287) 评论(0) 推荐(0) 编辑
摘要:动态类型:能够使程序直到执行的时候才确定所属的类。 动态绑定:能够使程序直到执行的时候才能确定要对对象调用的实际方法。 动态类型关注运行时类型信息; 动态绑定关注调用什么方法; 动态类型是动态绑定的基础。 类型系统是多态的基础。 阅读全文
posted @ 2018-09-19 12:03 zzfx 阅读(141) 评论(0) 推荐(0) 编辑
摘要:一、类型系统: 1、完全动态类型:对象的类型未id(oc语言)等,与顶级基类对应;可以调用顶级基类的函数及使用定制手段进行实际类型的函数调用。 2、继承动态类型:对象属于继承体系的一部分,基类的类型可以表征继承体系中任一类型的对象;基类对应于上面的顶级类型; 3、静态类型:编译时已确定的类型; 二、 阅读全文
posted @ 2018-09-19 11:49 zzfx 阅读(220) 评论(0) 推荐(0) 编辑
摘要:多态有类型系统衍生。 有限类型、无限类型、确定类型。 Classifications Christopher Strachey (1967) introduced the concept of polymorphism informally into procedural programming l 阅读全文
posted @ 2018-06-07 16:47 zzfx 阅读(271) 评论(0) 推荐(0) 编辑
摘要:与面向对象中的接口类或抽象类中定义的函数组类似; 函数的具体执行依赖与函数医用的类型。 In programming languages, ad-hoc polymorphism[1] is a kind of polymorphism in which polymorphic functions 阅读全文
posted @ 2018-06-07 15:45 zzfx 阅读(231) 评论(0) 推荐(0) 编辑

1