zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    中国区 Azure 服务和定价模式概述
    云计算的那些「What」
    【虚拟机-可用性集】ARM 中可用性集使用的注意事项
    【虚拟机-可用性集】将虚拟机添加到可用性集中
    【虚拟机-远程连接】Azure Linux 虚拟机常见导致无法远程的操作
    【虚拟机-远程链接】Azure Windows 虚拟机常见导致无法远程的操作
    【虚拟机-网络IP】使用 Powershell 设置 VNET 中的静态 IP
    matlab的diff()函数
    matlab的拟合函数polyfit()函数
    解决Python各种no module named "XX"的问题
  • 原文地址:https://www.cnblogs.com/iwangzheng/p/5469985.html
Copyright © 2011-2022 走看看