在子類里,我們可以通過(guò)重載父類方法來(lái)改變實(shí)體的行為.
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??
如果我們只是想增強(qiáng)父類的?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?也可以讓我們向原有的方法傳遞參數(shù).這里有時(shí)會(huì)有兩種類型的人...
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???
以上就是關(guān)于Ruby重載的全部?jī)?nèi)容,感謝大家的閱讀,更多內(nèi)容請(qǐng)關(guān)注武林技術(shù)頻道網(wǎng)站。
新聞熱點(diǎn)
疑難解答
圖片精選