類方法
類方法其實質是生活在該類的單件類中的單件方法。其定義方法有三種,分別是:
# 法一
def myclass.a_class_method; end
# 法二
class myclass
def self.anther_class_method; end
end# 法三*
class myclass
class << self
def yet_another_class_method; end
endend
其中第三種方法道出了,類方法的實質,特別記憶一下!
類擴充套件類擴充套件通過向類的單件類中新增模組來定義類方法。
module mymodule
def my_method; 『hello'; end
endclass myclass
class < self
include mymodule
endendmyclass.my_method
上面**展示了具體類擴充套件的實現方式,將乙個mymodule模組引入程式設計客棧到myclass類的單件類中,因為my_method方法是myclass的單件類的乙個例項方法,這樣,my_method方法也是myclass的乙個類方法。
物件擴充套件
類方法是單件方法的特例,因此可以把類擴充套件這種技巧應用到任意物件上,這種技巧即為物件擴充套件
# 法一: 開啟單件類來擴充套件
module mymodule
def my_method; 『hello'; end
endobj = object.new
class << obj
include mymodule
endobj.my_method # => 「hello」
obj.singl # => [:my_method]
# 法二:object#extend方法
module mymodule
def my_method; 『hello'; end
endobj = object.new
#物件擴充套件
obj.extend mymodule
objwww.cppcns.com.my_method # => 「hello」
#類擴充套件
class myclass
extend mymodule
endmycl程式設計客棧ass.my_method # => 「hello」
object#extend是在接受者的單件類中包含模組的快鍵方程式設計客棧式。
本文標題: ruby物件導向程式設計中類的方法與類的擴充套件
本文位址:
Ruby中的物件導向
物件導向是ruby的核心思想,我先列舉幾個單詞然後來解釋他們各自的意思。class state,method,instance,object,constructor,new,id,instance,variables,message class是生產類的母體,而constructor是生產類的機器。...
Python 物件導向程式設計 內建類方法
說明 init self,初始化物件,在建立新物件時呼叫 del self 釋放物件,在物件被刪除之前呼叫 new cls,args,kwd 例項的生成操作 str self 在使用print語句時被呼叫 getitem self,key 獲取序列的索引key對應的值,等價於seq key len ...
Ruby 中的類和物件
最近在ruby china中閒逛,無意中發現了一位提出的問題,這個問題相當有意思,並且促使我寫下了這篇部落格。原問題是這樣描述的 class object defdo it puts do it endend object do it 這個class method 怎麼來的?object new d...