Ruby中的public、private、protected區(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ī)則相同。
- asp.net 修飾符介紹(關(guān)于public、private、protected、internal)
- 深入理解C++中public、protected及private用法
- C++中的三種繼承public,protected,private詳細(xì)解析
- 淺析php面向?qū)ο髉ublic private protected 訪問修飾符
- JS中的public和private對象,即static修飾符
- C++友元(Friend)用法實例簡介
- C++中的friend友元函數(shù)詳細(xì)解析
- 概述C++中的 public protected private friend關(guān)鍵字的用法
相關(guān)文章
實例解析Ruby設(shè)計模式開發(fā)中對觀察者模式的實現(xiàn)
這篇文章主要介紹了實例解析Ruby設(shè)計模式開發(fā)中對觀察者模式的實現(xiàn),Ruby中自帶的observer類自然是絕佳的使用示例,需要的朋友可以參考下2016-04-04Ruby中創(chuàng)建字符串的一些技巧小結(jié)
這篇文章主要介紹了Ruby中創(chuàng)建字符串的一些技巧小結(jié),本文用先講解技巧然后給出代碼示例的方式列出了多種Ruby創(chuàng)建字符串方法,需要的朋友可以參考下2015-01-01Ruby基本的環(huán)境變量設(shè)置以及常用解釋器命令介紹
這篇文章主要介紹了Ruby基本的環(huán)境變量設(shè)置以及常用解釋器命令介紹,是Ruby入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-10-10