麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

Ruby類實例變量、類實例方法和類變量、類方法的區(qū)別

2024-07-21 23:04:42
字體:
來源:轉載
供稿:網友

在Ruby中類實例變量、類實例方法和類變量、類方法的區(qū)別比較微妙,而且用法也有相當?shù)膮^(qū)別。本文探討一下他們的定義和基本的使用場景,以拋磚引玉...
 
一.類實例變量和類變量
 
類變量大家都很熟悉了,就是在類定義中用@@開頭的變量。類變量是用于存儲類的全局信息,它只屬于類,不同與類實例變量(即用@開頭定義的變量)每一個類的對象都有一份數(shù)據(jù)。 類變量是可以被繼承的,也就是說如果我們派生一個子類,那么在子類中是可以訪問父類的類變量的。子類和父類共享一份數(shù)據(jù),對一個類的修改會反映到另一個類中。如下邊的代碼運行結果顯示:

復制代碼 代碼如下:

class A 
   #類變量在訪問前必須賦值,否則會有"uninitialized class variable“ 錯誤 
  @@alpha=123                # Initialize @@alpha 
  @@beta=456                 #Initialize @@beta 
  @@gamma=789              #Initialize @@gamma 
  
  def A.alpha 
    @@alpha 
  end  
  
  def A.alpha=(x) 
    @@alpha=x 
  end 
  
  def A.beta 
    @@beta 
  end 
  
  def A.beta=(x) 
     @@beta=x 
  end  
   
  def A.gamma 
   @@gamma 
  end 
  
  def A.gamma=(x) 
    @@gamma=x 
  end  
  def A.look 
    puts "#@@alpha, #@@beta, #@@gamma" 
  end 
  end 
 
 
class B<A   
end 
 
#初始的數(shù)據(jù) 
A.look 
B.look 
 
#修改父類中的類變量 
A.alpha=111 
A.look 
B.look 
 
 
運行結果: 
復制代碼 代碼如下:

123, 456, 789 
123, 456, 789 
111, 456, 789 
111, 456, 789 

 

那么什么是類的類實例變量呢?類的類實例變量是在類的類方法中或方法外邊(不能在實例方法中,那是類的實例變量)以@開頭定義的變量,這樣定義的變量值屬于類對象本身,不能夠被子類繼承。類對象這個說法可能有些讓人疑惑,其實Ruby中的一起都是對象,我們定義的類和Ruby的內置類本身就是元類的對象。因此如果要定義需要和子類共享的類全局數(shù)據(jù),使用類變量;但是如果要定義僅供類本身使用的類全局數(shù)據(jù)可以使用類實例變量。還有一點需要注意的是,和類變量不同的是類實例變量不要求訪問前必須賦值,不賦值它的值就是nil 。我們還是看一個例子,能夠更清楚一點...
 

復制代碼 代碼如下:

class A 
   #類的類實例變量在訪問前可以賦值也可以不賦值,不賦值就是nil 
  @alpha=123              # Initialize @alpha 
  @beta=456                #Initialize @beta 
  @gamma=789             #Initialize @gamma 
  
  def A.alpha 
    @alpha 
  end  
  
  def A.alpha=(x) 
    @alpha=x 
  end 
  
  def A.beta 
    @beta 
  end 
  
  def A.beta=(x) 
     @beta=x 
  end  
   
  def A.gamma 
   @gamma 
  end 
  
  def A.gamma=(x) 
    @gamma=x 
  end  
  def A.look 
    puts "#@alpha, #@beta, #@gamma" 
  end 
  end 
 
 
class B<A   
end 
 
A.look 
B.look 

代碼的運行結果如下:
復制代碼 代碼如下:

123, 456, 789
, ,
nil
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 九九热欧美 | 亚洲日本韩国在线观看 | 久久久久久麻豆 | chinesexxxx刘婷hd| 久久久久久久久久久久网站 | 国产一级毛片在线看 | 色中射 | 桥本有菜免费av一区二区三区 | 国产91片 | 羞羞色在线观看 | 视频一区二区三区在线 | 日韩精品a在线观看 | 视频一区二区三区在线观看 | 羞羞视频在线免费 | 久色伊人| 成人午夜看片 | 久久国产精品二区 | 在线播放免费人成毛片乱码 | 毛片免费观看视频 | 在线看免费观看日本 | 91一区二区三区久久久久国产乱 | 免费久久精品 | 成人福利在线 | 亚洲欧美不卡视频 | 91午夜免费视频 | 亚洲综合视频网站 | 国产美女视频黄a视频免费 日韩黄色在线播放 | 9797色 | 羞羞羞羞视频 | 99亚洲伊人久久精品影院红桃 | 久久国产精品电影 | 久久国产精品区 | 亚洲午夜精品视频 | 男女羞羞视频在线观看免费 | 激情小说图 | h视频在线免费观看 | 关键词 | 欧美成人一级 | 国产精品久久久久久久午夜片 | 久久久入口 | 久久国产一二区 |