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

4.4 继承

阅读更多
如果我们要写一个学生类,他当然有姓名、年龄、国籍,他也可以talk,但是应该表明身份是学生。看程序 E4.4-1.rb ,接着上一节的代码,添加如下:
ruby 代码
  1. class  Student < Person   
  2.   def  talk   
  3.     puts "I am a student. my name is "+@name+", age is "+@age.to_s   
  4.   end  # talk方法结束   
  5. end  # Student类结束   
  6. p3=Student.new("kaichuan",25); p3.talk   
  7. p4=Student.new("Ben"); p4.talk  

 #=>I am a student. my name is kaichuan, age is 25
      I am a student. my name is Ben, age is 18


用“ < ”表示Student类是 Person类的子类。Person类的一切,Student类都能继承。但是Student类重写了talk方法,所以我们看到了不同的运行结果。子类继承父类的时候,除了重写方法;也可以添加一些新的方法;或是增强父类的方法(用关键字super指明)。
现在说一说new方法。Person类没有定义new方法,为什么生成Person类的具体实例要用new? Ruby语言已经定义了一个类Object,如果你在定义新类的时候,没有指明新类的父类,那么,Ruby解释器认为,新类的父类是Object类。类Object含有new方法、initialize方法…只要你不重写这些方法,你就自然在使用类Object的方法。
从这里,我们发现一个有趣的事实:你写一个类的时候,是在创造一类事物的蓝图;当你new的时候,一个实例就按照蓝图生成了。
一个实例生成了,又一个实例生成了…他们或许是同类型的,或许不是同类型的,或许是有亲缘关系的。无数的实例在代码世界中交互、缠结,忽生忽死,无休无止…
蓝图早已设计好了,new的时候就是出生的时刻,那么,何时消亡呢?这里没有C++的析构函数,也没有Java的finalize( ) 方法,Ruby语言内建了一个比Java更灵巧的垃圾收集器,当某个实例不再与其它代码交互了,垃圾收集器就回收它占用的系统资源,这个实例自然也就不存在了。垃圾收集器是一段代码,它作它的工作,自动地、不知疲倦地随着系统一同运作,并无自己的喜恶。

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

分享到:
评论

相关推荐

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

    4.4 继承时变量与函数名字遮蔽问题 79 4.5 基类和派生类的构造函数 82 4.6 基类和派生类的析构函数 83 4.7 多继承 85 4.8 虚继承和虚基类 88 五、C++多态与抽象类 91 5.1 多态概念介绍 91 5.2 虚函数 92 5.3 纯虚...

    junit4.4的最新版本

    这种模式减少了对继承和接口的依赖,使代码更加简洁。 2. **参数化测试**: JUnit 4.4支持参数化测试,这意味着同一个测试方法可以接受多种参数组合并运行多次。`@Parameters`注解用于提供参数集,`@Test`注解与`@...

    JPA学习笔记

    4.4 继承映射 JPA支持单表继承(InheritanceType.SINGLE_TABLE)、联合继承(InheritanceType.JOINED)和表-per-hierarchy(InheritanceType.TABLE_PER_CLASS)三种继承策略。 ### 五、JPQL(Java Persistence ...

    nopCommerce_4.4功能实现详解.docx

    nopCommerce_4.4 功能实现详解 nopCommerce_4.4 是一个基于 .NET Core 框架的电子商务平台,具有功能强大、灵活性高、可扩展性强的特点。下面将详细介绍 nopCommerce_4.4 的功能实现详解。 基础架构 nopCommerce_...

    Hibernate Annotation Reference

    - **2.2.4.4 继承属性**:子类可以继承超类的映射属性。 #### 2.4.5 关联注解 针对单个关联和集合关联提供了丰富的注解选项,如`@JoinColumn`、`@JoinTable`等。 #### 2.4.6 缓存和过滤器 `@Cache`注解用于实体...

    4.4BSD操作系统设计与实现

    8. **FreeBSD与Linux的关系**:FreeBSD是4.4BSD的一个直接分支,它继承了4.4BSD的很多优秀特性,并在此基础上发展出一套自己的系统。而Linux虽然不是直接从4.4BSD演化而来,但Linux开发者借鉴了许多4.4BSD的设计思想...

    jbpm 4.4 用户指南与开发指南

    jbpm 4.4版本在继承前代优点的基础上,对性能和稳定性进行了优化,同时提供了更丰富的API和工具支持。 二、jbpm 4.4的主要特性 1. **流程建模**:jbpm 4.4支持使用Eclipse BPMN2模型进行流程设计,使得流程图直观...

    ActionScript开发技术大全

    4.4继承 89 4.4.1实现继承 89 4.4.2对象成员的继承 90 4.4.3静态成员继承 93 4.5包 94 4.5.1创建包 94 4.5.2类路径 95 4.5.3使用包 98 4.6订单利润计算示例 99 4.6.1需求分析 99 4.6.2编写代码 100 4.7小结 103 第5...

    JBPM4.4教程

    1. **创建测试类**:创建一个名为`ProcessTest`的类,继承自`org.jbpm.test.JbpmTestCase`。 2. **部署流程**:在`setUp()`方法中部署流程定义文件。 3. **执行流程**:编写测试代码以启动流程并验证流程是否按预期...

    Cocos-Creator开发(来自于网络).pdf

    Cocos-Creator开发(来自于网络).pdf ...4.4 继承...................................................................................................................................35 4.5 属性................

    junit4.4 下载

    10. **扩展性**:JUnit 4.4允许开发者通过实现`Runner`接口或继承已有的`BlockJUnit4ClassRunner`来创建自定义的测试运行器,从而扩展JUnit的功能。 压缩包文件“junit4.4”可能包含了JUnit 4.4的JAR文件和其他相关...

    jbpm4.4设计器文档

    jbpm4.4版本的设计器文档主要介绍了基于GEF(Graphical Editor Framework)实现的一个WEB版流程设计器,文档内容覆盖了设计器的设计理念、组成结构、工作流程以及定制化开发和扩展功能等多个方面。 GEF是一个图形...

    bash4.4 pdf

    Bash不仅继承了sh的功能,而且还吸纳了Korn Shell(ksh)和C Shell(csh)的一些有用特性。 2. Bash的版权: Bash的版权归1989-2016年的自由软件基金会所有。这意味着Bash是一个开源软件,遵循自由软件的原则,用户...

    make 4.4 for windows

    make 4.4作为最新版本,不仅继承了传统的功能,还引入了多项改进和优化,例如性能提升、更友好的错误处理和更好的跨平台支持。在Windows环境下,开发者可以通过gnumake.exe这个可执行文件来运行make命令,实现类似...

    锐捷3.3和锐捷4.4

    锐捷4.4版在继承了3.3版的兼容性优势的基础上,进行了升级和优化。同样地,它也支持32位和64位操作系统,确保了新老用户都能得到良好的体验。但值得注意的是,锐捷4.4可能引入了新的特性和改进,比如增强的安全性、...

    java继承例题

    【例 4.4】:私有成员变量继承 在这个例子中,我们定义了两个类:A和B。类B继承自类A,并继承了类A的私有成员变量`i`。在main方法中,我们创建了一个B类的对象,并访问了它的成员变量。 【例 4.5】:super关键字 ...

    JavaScript继承

    4.4 其他继承模式 除了传统的原型链继承,JavaScript还支持其他继承模式,如组合继承(组合使用构造函数和原型链)、寄生继承(通过创建父类副本改进继承)、原型式继承(使用`Object.create()`)、寄生组合式继承...

Global site tag (gtag.js) - Google Analytics