ruby 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 BankTellerare 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.





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值