在子類里,我們可以通過重載父類方法來改變實體的行為.
ruby>?class?Human
????|???def?identify
????|?????print?"I'm?a?person./n"
????|???end
????|???def?train_toll(age)
????|?????if?age? ????|???????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
????|?????print?"I'm?a?student./n"
????|???end
????|?end
???nil
ruby>?Student1.new.identify
I'm?a?student.
???nil??
如果我們只是想增強父類的?identify?方法而不是完全地替代它,就可以用?super.
ruby>?class?Student2
????|?????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
????|?????super(11)?#?we?want?a?cheap?fare.
????|???end
????|?end
???nil
ruby>?Dishonest.new.train_toll(25)
Reduced?fare.?
???nil
ruby>?class?Honest
????|?????super(age)?#?pass?the?argument?we?were?given
????|???end
????|?end
???nil
ruby>?Honest.new.train_toll(25)
Normal?fare.?
???nil???
以上就是關于Ruby重載的全部內容,感謝大家的閱讀,更多內容請關注武林技術頻道網站。
新聞熱點
疑難解答
圖片精選