`
凌川__
  • 浏览: 82277 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

4.5 多态

阅读更多
不同的子类继承一个父类,不仅子类和父类的行为有变异,而且子类彼此的行为也有差异,这就是多态。看程序 E4.5-1.rb ,接着4.3节的代码,添加如下:
ruby 代码
  1. class  Worker < Person     
  2.   def talk   
  3.     puts "I am a worker. my name is "+@name+", age is "+@age.to_s   
  4.   end  # talk方法结束   
  5. end    # Worker类结束   
  6. p5=Worker.new("kaichuan",30);p5.talk   
  7. p6=Worker.new("Ben");p6.talk  

 # =>I am a worker. my name is kaichuan, age is 30
       I am a worker. my name is Ben, age is 18


Worker类与Student类同样继承自Person类,亲缘关系是兄弟,当他们talk时,能准确表明自己身份,因为他们都重写了各自的talk方法。
Ruby语言,只有重写(override),没有其它语言具有的严格意义上的重载(overload)。Ruby语言有自己的单例方法,还有模块插入(Mix-in),后面会深入探讨Ruby语言的面向对象特征。

完整阅读,请看我写的 Ruby语言中文教程all in one    
 

分享到:
评论

相关推荐

    Ruby语言入门教程

    目录 自序.....................................................................................................................................................3 第一章概述.......................4.5 多态36

    精通C# 5.0和.NET 4.5框架应用开发 英文版

    继承和多态7。结构化异常处理。使用接口9。泛型和集合10。委托,事件和Lambda表达式 11。先进的C#语言功能12。LINQ到对象 13。理解对象生存14。构建和配置类库15。反射,动态加载,后期绑定,和属性16。动态语言...

    Think in ActionScript 3.0Ⅰ Ⅱ Ⅲ汇总

    4.5 this 和 super 关键字 4.5.1 TestSuper.as —— this 和 super 以及 override 4.5.2 this 和 super 的内存分析 4.5.3 TestThis.as —— 用 this 区分局部变量与成员变量 4.6 初始化顺序 4.7 静态属性与方法 ...

    《深度探索C++对象模型》(Stanley B·Lippman[美] 著,侯捷 译)

    4.5 Inline Functions 形式对数(Formal Arguments) 局部变量(Local Variables) 第5章 构造、解构、拷贝 语意学(Semantics of Construction,Destruction,andCopy) 纯虚拟函数的存在(Presence of a Pure ...

    C++编程思想习题

    4.5含有构造函数和析构函数的stack 4.6集合初始化 4.7缺省构造函数 4.8小结 4.9练习 第5章 函数重载与缺省参数 5.1范围分解 5.1.1用返回值重载 5.1.2安全类型连接 5.2重载的例子 5.3缺省参数 5.4小结 5.5练习 第6章 ...

    传智播客_C++基础课程讲义_v1.0.7

    4.5 struct类型加强 6 4.6 C++中所有的变量和函数都必须有类型 6 4.7新增Bool类型关键字 6 4.8三目运算符功能增强 6 5 C/C++中的const 6 1 const基础知识(用法、含义、好处) 6 2 C中“冒牌货” 6 3 const和#define...

    面向对象编程方法

    4.1一个简单的程序 4.2 类和对象 4.3 类的继承、重载与多态 4.4 运算符的重载 4.5 接口及其实现 4.6 方法的委托 4.7 常用的几个类 4.8 命名空间

    面向对象编程方法 /C#

    就是上课用的课件,拿来资源共享.面向对象编程方法 本章内容:4.1一个简单的程序 ...4.3 类的继承、重载与多态 4.4 运算符的重载 4.5 接口及其实现 4.6 方法的委托 4.7 常用的几个类 4.8 命名空间

    java走迷宫游戏课程设计 eclipse运行

    目录 1 课程设计意义与目标 1 1.1 课程设计意义 1 1.2 课程设计的目标 1 2 课程设计的题目 1 2.1 设计题目概述 1 ...并且逐步达到综合运用封装、继承和多态等JAVA难点知识,真正掌握JAVA语言的精华,从而熟练应用J

    程序开发原理:抽象、规格与面向对象设计.[美]Barbara Liskov(带详细书签).pdf

    4.5 防御编程 46 4.6 小结 47 练习 47 第5章 数据抽象 48 5.1 数据抽象的规格 49 5.2 使用数据抽象 53 5.3 实现数据抽象 54 5.4 附加方法 59 5.5 用于理解实现的一些帮助 63 5.6 数据抽象实现的属性 69 ...

    C++入门指南-v2.4.pdf

    4.5 基类和派生类的构造函数 82 4.6 基类和派生类的析构函数 83 4.7 多继承 85 4.8 虚继承和虚基类 88 五、C++多态与抽象类 91 5.1 多态概念介绍 91 5.2 虚函数 92 5.3 纯虚函数和抽象类 95 六、C++运算符重载 97 ...

    Java入门教程(微学苑)-part1

    4.5 继承中的方法的覆盖和重载 65 4.6 多态和动态绑定 66 4.7 动态绑定 69 4.8 instanceof 运算符 70 4.9 多态对象的类型转换 71 4.10 Java static关键字以及Java静态变量和静态方法 72 4.11 static 的内存分配 73 ...

    corejava培训文档

    4.5. 转换的二种类型 4.6. 控制流 4.7. 循环语句 5. 四 数组 5.1. 声明数组 5.2. 创建数组 5.3. 初始化数组 5.4. 多维数组 5.5. 数组拷贝 6. 五 对象和类 6.1. 面向对象与面向过程 6.2. 对象的概念 ...

    清华版labview教程

    3.4 什么是多态化(Polymorphism)? 3.5 簇 3.5.1 创建簇控制和显示 3.5.2 使用簇与子VI 传递数据 3.5.3 用名称捆绑与分解簇 3.5.4 数组和簇的互换 3.6 波形(Waveform)类型 第四章 ...

    优变梨橙材料的RAPD分析 (2008年)

    结果表明:在70个引物中有 6个引物可扩增出条带,共计 94条,其中多态性条带数为 27条,平均每个引物出现多态带 4.5条.特别是引物 J039、S150和 S304可清晰的区分开这 4份材料.聚类分析发现,梨橙和锦橙遗传相似系数在 90...

    深度探索模C++对象模型PDF

    4.5 Inline Functions 形式对数(Formal Arguments) 局部变量(Local Variables) 第5章 构造、解构、拷贝 语意学(Semantics of Construction,Destruction,and Copy) 纯虚拟函数的存在(Presence of a Pure ...

    深度探索C++对象模型 超清版

    4.5 Inline Functions 形式对数(Formal Arguments) 局部变量(Local Variables) 第5章 构造、解构、拷贝 语意学(Semantics of Construction,Destruction,and Copy) 纯虚拟函数的存在(Presence of a Pure ...

    设计模式,软件开发者必读

    4.5 ITERATOR 迭代器模式 75 4.6 OBSERVER 观察者模式 83 4.7 MEMENTO 备忘录模式 87 4.8 STATE 状态模式 91 4.9 STRATEGY 策略模式 96 4.10 TEMPLATE METHOD模板方法 100 4.11 VISITOR 访问者模式 103 C++高级编程 ...

    编程思想下篇

    4.5 return 4.6 break和 continue 4.7 臭名昭著的“goto” 4.8 switch 4.9 总结 第5章 初始化与清理 5.1 用构造器确保初始化 5.2 方法重载 5.2.1 区分重载方法 5.2.2 涉及基本类型的重载 5.2.3 以返回值区分重载方法...

    C# 温故而知新:stream篇

    2.4 从StreamReader想到多态 2.5 简单介绍下Encoding 编码 2.6 StreamReader 的定义及作用 2.7 StreamReader 类的常用方法属性 2.8 StreamReader示例 3.1 为何介绍TextWriter? 3.2 TextWriter的构造,常用属性和方法 ...

Global site tag (gtag.js) - Google Analytics