Inheritance
Often, classes will have shared characteristics with other classes.
Rewriting the same methods for each class over and over again can be pretty cumbersome, and not always necessary.
class BankTeller def get_paid # method stuff... end def come_to_work # method stuff... end def go_on_vacation! # method stuff... end def do_bank_teller_stuff # method stuff... end end class LoanSpecialist def get_paid # method stuff... end def come_to_work # method stuff... end def go_on_vacation! # method stuff... end def do_loan_specialist_stuff # method stuff... end end
I mean, just look at these two classes! They’re nearly identical!
The only differences are thedo_bank_teller_stuff
and do_loan_specialist_stuff
methods.
Both of these classes have characteristics that are shared across all employees.
Being redundant like this works, but will quickly cause problems if you decide that employees should be paid bi-weekly instead of on a fixed day of the month.
You’d have to update the get_paid
method for every single employee class! Right now you’ve only got two,
but what if you had 30 different roles in the company. No thank you.
Here, you can use inheritance to share traits across various classes.
class Employee def get_paid # method stuff... end def come_to_work # method stuff... end def go_on_vacation! # method stuff... end end class BankTeller < Employee def do_bank_teller_stuff # method stuff... end end class LoanSpecialist < Employee def do_loan_specialist_stuff # method stuff... end end
You can use the <
when defining these classes to indicate that LoanSpecialist
and BankTeller
are the children of Employee
.
When this happens, they inherit all the methods of the parent class. You can continue to define new methods for the child class as you normally would.
Note that a child can only have one parent class.
This technique of inheritance is a handy way to reduce code duplication and logically separate out the concerns of your code.
Feeling Protected
We previously mentioned that in addition to the public
and private
keywords, there is also aprotected
keyword.
private
and protected
are similar in many ways, with one key difference: private methods are not shared through inheritance,
whereas protected methods are shared across all children classes.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步