Ruby重载知识讲解

开发 开发工具
Ruby重载在实际编程中是非常常用到的一个方法。不过这方面的内容不是非常容易掌握,我们需要不断的实践积累才能充分了解其中的概念。

Ruby语言作为一种新兴的编程语言,广大编程语言都对其保佑非常大的好奇心。在这篇文章中我们将会认识到Ruby重载的一些知识。#t#

在子类里,我们可以通过Ruby重载父类方法来改变实体的行为.

  1. ruby> class Human   
  2. | def identify   
  3. | print "I'm a person.\n"   
  4. | end   
  5. | def train_toll(age)   
  6. | if age < 12   
  7. | print "Reduced fare.\n";   
  8. | else   
  9. | print "Normal fare.\n";   
  10. | end   
  11. | end   
  12. | end   
  13. nil   
  14. ruby> Human.new.identify   
  15. I'm a person.   
  16. nil   
  17. ruby> class Student1<Human   
  18. | def identify   
  19. | print "I'm a student.\n"   
  20. | end   
  21. | end   
  22. nil   
  23. ruby> Student1.new.identify   
  24. I'm a student.   
  25. nil  

 

如果我们只是想增强父类的 identify 方法而不是完全地替代它,就可以用 super进行Ruby重载.

  1. ruby> class Student2<Human   
  2. | def identify   
  3. | super   
  4. | print "I'm a student too.\n"   
  5. | end   
  6. | end   
  7. nil   
  8. ruby> Student2.new.identify   
  9. I'm a human.   
  10. I'm a student too.   
  11. nil   

 

super 也可以让我们向原有的方法传递参数.这里有时会有两种类型的人...

  1. ruby> class Dishonest<Human   
  2. | def train_toll(age)   
  3. | super(11) # we want a 
    cheap fare.   
  4. | end   
  5. | end   
  6. nil   
  7. ruby> Dishonest.new.train_toll(25)   
  8. Reduced fare.   
  9. nil   
  10. ruby> class Honest<Human   
  11. | def train_toll(age)   
  12. | super(age) # pass the 
    argument we were given   
  13. | end   
  14. | end   
  15. nil   
  16. ruby> Honest.new.train_toll(25)   
  17. Normal fare.   
  18. nil   

 

以上就是对Ruby重载的相关知识介绍。

责任编辑:曹凯 来源: jb51.net
相关推荐

2009-12-15 11:01:31

Ruby数组

2009-12-16 14:24:48

Ruby函数lambd

2009-12-15 14:58:19

Ruby迭代器

2009-12-14 09:33:04

Ruby安装

2009-12-17 15:11:47

Ruby百分号表示法

2009-12-14 15:30:43

安装Ruby on R

2009-12-16 17:37:31

Ruby on Rai

2009-12-16 15:41:10

Ruby on Rai

2009-12-16 13:21:22

Ruby will_p

2009-12-15 09:56:51

Ruby流程控制

2009-12-18 14:35:01

Ruby奇特变量

2009-12-15 13:26:33

Ruby单态方法

2010-05-05 13:13:55

Unix内核

2009-12-22 14:54:52

WCF安全

2010-04-30 13:27:26

Unix cronta

2010-05-05 13:45:21

Unix Telnet

2010-05-04 12:25:28

Unix链接

2010-04-30 13:38:51

Unix at命令

2010-05-04 09:22:10

Unix文件

2009-12-14 14:32:50

Ruby线程局部域变量
点赞
收藏

51CTO技术栈公众号