|
|
在子类里,我们可以通过重载父类方法来改变实体的行为.
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> 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文档中心的所有文章标明[原创]的均为本站作品,版权属RUBY中文化计划,若转载请注明;标明[翻译]的其外文版权归原作者,译文版权属RUBY中文化计划;标明[转贴]的,若原作者感到侵犯了他的著作权,那么请及时跟主持人联系,我们会尽快更正。 | |
|