在面向对象语言中,有两个基本方法实现参数化多态。
1.“同类”实现对参数化类型的所有实例化执行相同的编译代码
2.“异类”实现对参数类型的每个独立的实例化产生专门代码的编译代码
同类实现方法的原理是在编译时去掉类型参数,用适合于所有实例的通用类型替换他们。在GJ中,运行时没有类型参数信息,而是GJ编译器插入多台类型映射到代码中,保证类型安全。
优点:节省内存
缺点:类型擦除丢失了信息这就意味着类型参数无法在一个新表达式中指定类型,而且类型参数不能用作映射的类型、catch或instanceof表达式中。
异类实现方法可以通过Java层实现,它为每个实例产生了专用的代码。
优点:改进了同类实现方法
缺点:如果实例很多,会产生代码膨胀,此外,替换实例类中的实际类型参数,会导致当实际类型和参数类型在不同的包中时,产生访问控制限制。
同类实现和异类实现各有优缺点,如果编译器提供让程序员自己选择控制实例化的方法是否可以取长补短呢?
分享到:
相关推荐
该方法对强制多态、重载多态、类型参数化多态和包含多态这四种类型的多态进行分析,得出反映类的多态复杂性的量度,即强制多态复杂性(CCPP)、重载复杂性(CMC)、参数多态复杂性(CPMP)、包含多态复杂性(CCTP)...
对于泛型程序设计来说,类型的参数化多态是其理论框架,参数化多态引入了类型变量,使得类型参数化,支持类型上的抽象,从而可以大大提高软件的复用程度。泛型编程思想已经在多种语言中得到运用,并已取得了不小的...
圆点符号用于访问对象的成员,构造函数在创建对象时初始化对象 包可用package 来申明 ,可用import 来导入包 目标 理解继承及其特点 运用JAVA程序实现继承 理解多态及其特点设计 运用JAVA程序实现多态 掌握访问修饰...
模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 通常有两种形式:...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
派生一个类的原因并非总是为了继承或是添加新的成员,有时是为了...在C++中,这种多态性可以通过重载多态(函数和运算符重载),强制重载(类型强制转换),类型参数化多态(模板) ,包含多态(继承与虚函数)四种方式
NULL 博文链接:https://jayxigua.iteye.com/blog/686356
参数化简单的js库,可通过javascript函数实现即席多态性。 具有相同名称的重载函数使用不同的参数类型,因此使它们根据输入参数的不同而求值。 (可选)您可以使其充当类型检查器,并在未定义的签名上引发错误。如何...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
C#语言三大特性:继承,封装,多态 一:多态性 多态是指一个行为具有多个不同表现形式的能力,在C#中通过多态性的检测时机可以分为静态多态性和...——抽象类不能实例化,不能使用抽象类去构造对象,但是可以使用抽
ASP.NET Web Services通过声明XmlIncludeAttribute可以实现Web Services方法中运用多态。 XmlIncludeAttribute允许XmlSerializer在序列化火反序列化对象时识别类型。当应用XmlIncludeAttribute时,需指定派生类的...
一个构造方法,带参数,初始化各个属性,特别要求带有年月日的参数,并利用GregorianCalendar日历类生成日期并转化成对应的Date类的日期 对于每个属性添加一个set和get方法 一个实现增长薪水的的方法raiseSalary...
7 初始化列表作为构造函数的参数 8 多态的原理 9 虚继承的问题 10 delete this合法吗 11 如何声明一个只能在栈上或者堆上创建的类? 12 智能指针的用法?各类智能指针又是怎么实现的呢? 13 如何查有没有内存泄漏? ...
泛型编程在C++领域中早已深入人心,它赋予了类型参数式多态的能力,这种能力在ISO-C++中以编译时的模板实例化为依托。而CLI借自己强大的元数据系统,选择了运行时的模板实例化来支持泛型编程。C++/CLI在保留ISO-C++...
文章目录1 类、对象/实例、实例化2 三大特性1)继承2)封装3)多态4)super方法5)类中的三个装饰器(内置函数)6)反射7)一些内置的魔术方法3 补充1)内置数据结构2)非(python)内置数据结构3)抽象类实例 ...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、...
名词解释 泛型 答即参数化类型允许程序创建集合时指定集合元素的类型在定义方法类接口时使用类型形参类型形参将在声明变量调用方法创建对象时动态地指定.如:List,ArrayList 2. 多态 答Java引用变量分为编译时的类型...
1.4.4结构化 1.4.5开发 1.4.6重写 1.4.7逻辑 1.5其他方法 1.5.1Booch 1.5.2责任驱动的设计(RDD) 1.5.3对象建模技术(OMT) 1.6为向OOP转变而采取的策略 1.6.1逐步进入OOP 1.6.2管理障碍 1.7小结 第2章 数据抽象 ...
5.1.2. 实现一个默认的(即无参数的)构造方法(constructor) 5.1.3. 提供一个标识属性(identifier property)(可选) 5.1.4. 使用非final的类 (可选) 5.2. 实现继承(Inheritance) 5.3. 实现equals()和...