繼承是兩個類之間的關係。繼承在類之間創建父親子關係 。它是代碼 重用的機制,並允許通過公共類和接口獨立擴展原始軟件。繼承的好處是 降低層級的類可以獲得更高級的功能,但也可以添加特定的自己的功能。
在Ruby中,一個類只能從一個其他類繼承。 (即一個類可以繼承自繼承自另一個類的另一個類的繼承類,但是一個類不能同時繼承多個類)。 BasicObject類是Ruby中所有類的父類。因此,它的方法可用於所有對象,除非明確覆蓋。
Ruby通過使用mixin一次性克服單個類繼承。
我會試着用一個例子來解釋。
module Mux
def sam
p "I am an module"
end
end
class A
include Mux
end
class B < A
end
class C < B
end
class D < A
end
您可以通過使用class_name.superclass.name跟蹤,除非你發現BasicOject在這個層次做了這個過程。 BasicObject是每個類的超類。讓我們看看假設我們想看到C類層次樹。
C.superclass
=> B
B.superclass
=> A
A.superclass
=> Object
Object.superclass
=> BasicObject
你可以看到C類點的整個層次使用這種方法,你不會找到所包含或在父類前綴的模塊要注意。
還有一種方法可以找到包含模塊的完整層次結構。根據Ruby文檔ancestors。返回mod中包含/預置的模塊列表(包括mod本身)。
C.ancestors
=> [C, B, A, Mux, Object, Kernel, BasicObject]
這裏,複用器和內核是模塊。
http://rubylearning.com/satishtalim/ruby_inheritance.html https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)
堅持這樣的時候總是試圖'B.methods.sort'在IRB。也許有些東西會給你一個關於你所尋找的方法名稱的線索。 – 2013-02-08 18:17:52
@IvayloStrandjev這沒有幫助。有太多的方法要查看。這是浪費時間。 – sawa 2013-02-08 18:20:37
@sawa不正確。花了我30秒。足以讓其他用戶比我快,但速度很快。 – 2013-02-08 20:44:21