Multiple Inheritance in Ruby?

前端 未结 4 558
鱼传尺愫
鱼传尺愫 2021-02-01 15:04

I thought that Ruby only allowed single inheritance besides mixin. However, when I have class Square that inherits class Thing, Thing in t

4条回答
  •  执念已碎
    2021-02-01 15:50

    If class B inherits from class A, then instances of B have the behaviors of both class A and class B

    class A
    end
    
    class B < A
      attr_accessor :editor
    end
    

    Ruby has single inheritance, i.e. each class has one and only one parent class. Ruby can simulate multiple inheritance using Modules(MIXINs)

    module A
      def a1
      end
    
      def a2
      end
    end
    
    module B
      def b1
      end
    
      def b2
      end
    end
    
    class Sample
      include A
      include B
    
      def s1
      end
    end
    
    
    samp=Sample.new
    samp.a1
    samp.a2
    samp.b1
    samp.b2
    samp.s1
    

    Module A consists of the methods a1 and a2. Module B consists of the methods b1 and b2. The class Sample includes both modules A and B. The class Sample can access all four methods, namely, a1, a2, b1, and b2. Therefore, you can see that the class Sample inherits from both the modules. Thus you can say the class Sample shows multiple inheritance or a mixin.

提交回复
热议问题