ruby中的執行個體變數和類變數

來源:互聯網
上載者:User

標籤:variable   代碼   訪問   抽象   ble   style   utc   puts   執行個體變數   

定義很簡單:執行個體變數@開頭,類變數@@開頭看了一些文章和書,目前瞭解到的(其實還是不太懂,先記著吧,錯了再改):
  1. 類變數:可以在類方法和類執行個體方法中訪問,也能被子類繼承,並且子類修改之後,父類的值也會更改。
    • 不同的子類都共用這個一個數值,包括子類的執行個體,都可以來修改這一個值。就理解成:不管自己還是子類的,什麼函數都可以訪問,也都可以改,改了之後也是大家共用。
  2. 執行個體變數:能被類方法訪問,不能被繼承,子類中賦值不會影響父類。
    • 子類如果修改了,其實是不是重新定義了一下又賦了新的值?
    • 這個其實更像應該和C++/C#類裡的public變數,子類繼承了之後可以重新賦值,代碼還是一樣用。
    • 但是執行個體變數不能被類執行個體方法訪問就有點抽象了…被相似的名詞弄的腦仁兒疼。
我也不太知道自己在說什麼, 忘了就直接看代碼:
 1 class Test 2   @@class_var = 10 3   @class_instance_var  = 1 4   #類方法: 兩種變數都可以訪問 5   def self.outclass_var 6       puts @@class_var 7   end 8   def self.outclass_instance_var 9       puts @class_instance_var10   end11   #類執行個體方法: 不能訪問類執行個體變數12   def outclass_var13       puts @@class_var14   end15   def outclass_instance_var16       puts @class_instance_var17   end18 end19 20 #如果兩個變數不初始化,這裡就列印不出來。不知道是不是版本的問題21 puts Test.class_variables #=>@@class_var22 puts Test.instance_variables #=>@class_instance_var23 24 #類變數,可以被子類共用且修改25 class SubCls < Test26   @@class_var = 1227 end28 29 #可以看到現在類變數值都被修改了30 Test.outclass_var #=>1231 SubCls.outclass_var #=>1232 33 #子類無法繼承父類的執行個體變數34 Test.outclass_instance_var #=>135 SubCls.outclass_instance_var #=>空36 37 38 #類執行個體方法不能訪問執行個體變數39 Test.new.outclass_var #=>1240 Test.new.outclass_instance_var #空41 42 #再看一下子類,和父類的情況相同43 SubCls.new.outclass_var #=>1244 SubCls.new.outclass_instance_var #空

 

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.