Ruby類結構總結

視頻:https://eggman.tv/players/ruby-buildin-class-design
一、在ruby中,一切都是對象。當你定義了一個類,這個類名在ruby中就變成一個Class類的實例。
首先我們知道,所有實例都有class方法,返回這個實例的類。

A # 沒定義A類前調用,報錯 NameError: uninitialized constant A
class A
end
a = A.new
a.class # => A
A.class # => Class

說明當我們定義了A類,A就成了一個實例
二、Class的父類是Module,Class實例有一個superclass方法,返回這個類的父類

Class.superclass # => Module,表示Class的父類是Module
A.superclass # => Object, 表示A的父類是Object

三、先看一段代碼

module B
  def hi
    p "hi from B"
  end
end
class A
  def hi
    super
    p "hi from A"
  end
end
a = A.new
a.hi # => hi from B \n hi from A 
a.ancestors # => [A, B, Object, Kernel, BasicObject](下面把這個數組稱為方法鏈)

在其他語言中,一般我們認為super就是調用父類同名方法。在ruby我們可以這樣認為,super是調用方法鏈中的第一個同名方法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容