標籤:
一、類變數
在ruby中,可以為類定義類變數,類變數的值為類的所有執行個體(對象)所共用。
有點類似其它語言(如java)中的靜態變數,但與java中的靜態變數的區別是,
類變數是私人的,無法在類的外部存取,只能通過類的方法訪問。
類變數通過 @@符號來標識(連續的兩個@符號)。
舉例說明:
class Demo @@a = 1 def plus @@a += 1 end def print puts @@a endend #建立對象,調用對象的方法demo1= Demo.newdemo1.printdemo1.plusdemo1.printdemo2= Demo.newdemo2.printdemo2.plusdemo2.printdemo1.print
運行上面的代碼,通過輸出可以看出類變數的特性。
需要說明的是,類變數必須被初始化後才能訪問,所以一般都是在類中直接聲明,而不像執行個體變數一般是在建構函式(或其它方法)中聲明。
因為在建構函式中聲明和初始化,則建立多個對象會被相互覆蓋。在類中直接聲明和初始化,只會被初始化一次。
二、類方法
在rbuy中,可以定義類方法,有點類似java中的靜態方法。我們直接上例子:
class Demo @@b=2 def initialize @a=1 end def print puts @a puts @@b end def Demo.test #類方法 puts @a #返回nil @a = 5 puts @a puts @@b end def Demo.test1 #類方法 puts @a endend demo = Demo.newdemo.print Demo.testDemo.test1demo.print
查看上面代碼和啟動並執行結果,會發現類方法有如下特點:
1)類方法的定義和引用都需要前面加類名
2)類方法可以訪問類變數
3)類方法中引用的 @a 並不是類的執行個體變數,而是另外一個命名空間的
Ruby學習: 類變數和類方法