Ruby语言作为一种新兴的编程语言,广大编程语言都对其保佑非常大的好奇心。在这篇文章中我们将会认识到Ruby重载的一些知识。#t#
在子类里,我们可以通过Ruby重载父类方法来改变实体的行为.
- ruby> class Human
- | def identify
- | print "I'm a person.\n"
- | end
- | def train_toll(age)
- | if age < 12
- | print "Reduced fare.\n";
- | else
- | print "Normal fare.\n";
- | end
- | end
- | end
- nil
- ruby> Human.new.identify
- I'm a person.
- nil
- ruby> class Student1<Human
- | def identify
- | print "I'm a student.\n"
- | end
- | end
- nil
- ruby> Student1.new.identify
- I'm a student.
- nil
如果我们只是想增强父类的 identify 方法而不是完全地替代它,就可以用 super进行Ruby重载.
- ruby> class Student2<Human
- | def identify
- | super
- | print "I'm a student too.\n"
- | end
- | end
- nil
- ruby> Student2.new.identify
- I'm a human.
- I'm a student too.
- nil
super 也可以让我们向原有的方法传递参数.这里有时会有两种类型的人...
- ruby> class Dishonest<Human
- | def train_toll(age)
- | super(11) # we want a
cheap fare.- | end
- | end
- nil
- ruby> Dishonest.new.train_toll(25)
- Reduced fare.
- nil
- ruby> class Honest<Human
- | def train_toll(age)
- | super(age) # pass the
argument we were given- | end
- | end
- nil
- ruby> Honest.new.train_toll(25)
- Normal fare.
- nil
以上就是对Ruby重载的相关知识介绍。