Rubyとオブジェクト指向についてアウトプットしてみる【Mixin(extend)】

8.Mixin(extend)

module Hiden_of_Kuririn
  def kienzan
    print "気円斬!"
  end
end

class Kamesennin
  def kamehameha
    print "かめはめ波!"
  end
end

class Goku < Kamesennin
  def shunkanidou
    print "瞬間移動!"
  end

  def kamehameha
    print "界王拳4倍かめはめ波"
  end
end


goku1 = Goku.new
goku1.extend Hiden_of_Kuririn
goku1.kienzan   #=> 気円斬!

今回の亀仙人(Kamesennin)は昔、クリリンの書(Hiden_of_Kuririn)を取得していませんでした。
しかし悟空(Goku)の分身は使わなければいけませんでした。
そこで、登場したのが extend です。
extend を利用して、悟空の分身(Gokuのインスタンス)は
クリリンの書(Hiden_of_Kuririn)を手に入れ、"気円斬!"を利用できるようになれるのです。
これが、Mixin(extend)です。


Rubyオブジェクト指向についてアウトプットしてみる○

1.メッセージ 〜オブジェクトは「問いかけたらきちんと返事をしてくれる」〜

2.継承とは

3.メソッドの実行

4.特異メソッド

5.特異クラス

6.オーバーライド

7.Mixin(include)

8.Mixin(extend)

9.委譲