類和方法是面向對象編程語言的典型特征,但類方法受類范圍的約束,今天在這里,武林技術頻道簡要介紹Ruby面向對象編程中的類方法和類擴展,一起跟著武林技術頻道小編的步伐來學習吧!
類方法
類方法其實質是生活在該類的單件類中的單件方法。其定義方法有三種,分別是:
ruby;"># 法一def MyClass.a_class_method; end# 法二class MyClass def self.anther_class_method; endend# 法三*class MyClass class << self def yet_another_class_method; end endend
其中第三種方法道出了,類方法的實質,特別記憶一下!
類擴展
類擴展通過向類的單件類中添加模塊來定義類方法。
module MyModule def my_method; ‘hello'; endendclass MyClass class < self include MyModule endendMyClass.my_method
上面代碼展示了具體類擴展的實現方式,將一個MyModule模塊引入到MyClass類的單件類中,因為my_method方法是MyClass的單件類的一個實例方法,這樣,my_method方法也是MyClass的一個類方法。
對象擴展
類方法是單件方法的特例,因此可以把類擴展這種技巧應用到任意對象上,這種技巧即為對象擴展
?
# 法一: 打開單件類來擴展module MyModule def my_method; ‘hello'; endendobj = Object.newclass << obj include MyModuleendobj.my_method # => “hello”obj.singleton_methods # => [:my_method]# 法二:Object#extend方法module MyModule def my_method; ‘hello'; endendobj = Object.new#對象擴展obj.extend MyModuleobj.my_method # => “hello” #類擴展class MyClass extend MyModuleendMyClass.my_method # => “hello”
Object#extend是在接受者的單件類中包含模塊的快鍵方式。
以上就是由武林技術頻道的小編為大家總結的介紹Ruby面向對象編程中的類方法和類擴展,我們會在今后的文章中繼續和大家分享。
新聞熱點
疑難解答
圖片精選