最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ruby中的public、private、protected區(qū)別小結(jié)

 更新時間:2014年08月04日 11:09:03   投稿:junjie  
這篇文章主要介紹了Ruby中的public、private、protected區(qū)別小結(jié),即Ruby中訪問控制符的區(qū)別總結(jié),需要的朋友可以參考下

重點關(guān)注private與protected

public

默認(rèn)即為public,全局都可以訪問,這個不解釋

private

C++, “private” 意為 “private to this class”, 但是Ruby中意為 “private to this instance”.
意思是:C++中,對于類A,只要能訪問類A,就能訪問A的對象的private方法。
Ruby中,卻不行:你只能在你本對象的實例中訪問本對象的private方法。
因為Ruby的原則是“private意為你不能指定方法接收者”,接收者只能是self,且self必須省略!
所以Ruby中子類可以訪問父類的private方法。但self.private_method是錯的。

protected

可以在本類或子類中訪問,不能在其它類中訪問。

測試代碼(public均可訪問,代碼略)

class A
 def test
  protected_mth
  private_mth
 
  self.protected_mth
  #self.private_mth   #wrong
 
  obj = B.new
  obj.protected_mth
  #obj.private_mth    #wrong
 end
 
 protected
 def protected_mth
  puts "#{self.class}-protected"
 end
 
 private
 def private_mth
  puts "#{self.class}-private"
 end
end
 
class B < A
 def test
  protected_mth
  private_mth
 
  self.protected_mth
  #self.private_mth   #wrong
 
  obj = B.new
  obj.protected_mth
  #obj.private_mth    #wrong
 end
end
 
class C
 def test
  a = A.new
  #a.protected_mth     #wrong
  #a.private_mth      #wrong
 end
end
 
A.new.test
B.new.test
C.new.test


注:ruby的訪問控制不同于java,沒有包的區(qū)別。
其它包中的類只要引用目標(biāo)類,和目標(biāo)類同包下類訪問控制規(guī)則相同。

相關(guān)文章

最新評論

威信县| 望城县| 昆明市| 南昌县| 定边县| 萨迦县| 自治县| 长宁县| 宿松县| 新余市| 西乡县| 新安县| 民和| 柞水县| 应城市| 巩留县| 枣阳市| 手游| 资中县| 平山县| 长春市| 桃园县| 枞阳县| 石家庄市| 华池县| 文安县| 含山县| 利辛县| 云林县| 阿勒泰市| 新野县| 乐都县| 炉霍县| 曲阳县| 海伦市| 香河县| 微山县| 哈尔滨市| 南川市| 武功县| 定州市|