Mixin / Extend / Inheritance

在說明 Mixin 跟 Extend 之前我們必須先解釋何為 Module。因為 Mixin 跟 Extend 是在引入 module 時會使用到的語法,而Inheritance則是繼承class時會用到的。

Module

使用Module的好處就是可以選擇性的引用 Module 內的方法,不會讓 Module 內的變數或是 Method 與其他 Class 互相影響,有點類似class補充包的感覺。而引用 Module的方式就是Mixin & Extend。

Mixin

引用 Module的方式有以下兩種。第一是可以在Class內include Module:

class Include < Example
    include module
end

使用include的方式可以讓module的method在class底下被取用 所以我們就可以使用這樣的方法:

user.module_method

Extend

另外一個引用Module方式是Extend Extend的用法是讓Class可以直接取用Module內的Method

class Extend < Example
    extend module
end

所以這樣這個時候我們就可以使用這樣的寫法:

Extend.module_method

Inheritance

Inheritance(繼承)的意思就是繼承者擁有被繼承者的特性,用於類別(class)的繼承,所以子類別可以呼叫父類別的方法

class Parent
  @last_name = "james"
  def laugh
      "heeeeeeeeha!"
  end
  def last_name
      @last_name
  end
end

class Child < Parent
end

dad = Parent.new
son = Child.new
#Child可以呼叫Parent的method
papa.laugh # => "heeeeeeeeha!"
son.laugh # => "heeeeeeeeha!"
#Child也繼承了Parent的實例變數
son.last_name # => "james"

參考資源