Ruby學習: 類變數和類方法

來源:互聯網
上載者:User

標籤:

一、類變數

在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學習: 類變數和類方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.