例項方法和類方法(補)

2021-08-29 09:07:49 字數 442 閱讀 8757

看到乙個人這樣用module,讓我迷糊了半天

ruby **

module m   

def module_method   

endextend self

end

我瞅了半天那個extend self,心想,難道這樣子不會引起迴圈麼?每次碰到這句話都給自己建乙個單件類,然後在單件類中include m,到了include m的時候又要碰到extend self,然後給這個單件類再建乙個單件類,繼續include。。。無限迴圈?

但是把上述**寫了一下發現,這個extend self在m的單件類中根本沒有執行?因為我對extend和include的實現不太清楚,只能猜想,在include和extend的時候,只有「方法的定義」會被執行,類似於變數定義,表示式求值,方法呼叫等等統統忽略,只有這樣,才能符合上述現象。猜了半天,找不到頭緒。回家看看ruby源**。

類方法和例項方法?

筆試中遇到都最最基礎的問題,我竟然有點懵了。首先沒弄清楚什麼是類方法,什麼是例項方法,現在就做乙個總結。類中的方法分為類方法和例項方法。類方法 類中用 static 修飾的方法。例項方法 也稱為物件方法,除了類方法都是例項方法。類方法在類被 jvm 虛擬機器載入進記憶體的時候就會為其分配入口位址,例...

例項變數和類變數 類方法和例項方法

類體中包括成員變數和區域性變數,而成員變數又可以細分為例項變數和類變數,在宣告成員變數的時候,用static給予修飾的稱作類變數,否則稱作例項變數。類變數也稱為static變數,靜態變數 那麼,類變數和例項變數有什麼區別呢?我們知道,乙個類通過使用new運算子可以建立多個不同的物件,這些物件將被分配...

例項方法,類方法和物件方法

class a num 10 def hehe self print 我是例項方法 也叫物件方法 classmethod def haha cls print 我是類方法,我的第乙個引數代表的是類,例如本例是a cls.num staticmethod def heihei print 我是靜態方法...