Ruby public private protected

public private protected 是定義在一個名為Module的類中的三個方法,限定了對方法的訪問權限。

關鍵字 module class def 稱為作用域門,出現這三個關鍵詞時會發生作用域切換。

默認情況下 如果不聲明,所有的方法都是public,在private 或者 protected后面都是private 或者 protected的方法。
同時也可以使用 public :demo, private :demo, protected :demo 的方式定義。

方法 initialize方法是private只能被new方法調用

  1. private 和 protected 方法不能在對象實例上直接調用
class Product
  def initialize(name)
      @name = name
  end
  def show
     @name
  end
  private
    def sku
        (1..5).to_a.join
    end
  protected
    def color
       'red'
    end
end
r_p1.png
  1. private 不能指定receiver 即使是self
    只能在方法中調用
  2. protected 在方法內部調用
    在方法中調用時可以指定 self
    在方法中相同類型的對象可以直接調用protected方法
  3. 在類的子類中 父類的private protected可以被調用但是仍舊遵循上面的規則

(參考一)[http://culttt.com/2015/06/03/the-difference-between-public-protected-and-private-methods-in-ruby/]
(參考二)[http://kaochenlong.com/2011/07/26/public-protected-and-private-method-in-ruby/]

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • 小的時候特別希望可以有機會在很多人面前表演,成為那個焦點; 很希望大合唱中自己有機會變成領唱; 很希望在各種廣播體...
    小Dew閱讀 219評論 0 2
  • 文‖清微淡遠一直很喜歡“靈氣”二字,靈心慧性、氣定神閑。
    玲瓏雪閱讀 637評論 0 0
  • 姓名:張獻忠 日精進打卡第368天 【打卡始于2016.11.01持續于2017.11.03】 【知~學...
    張獻忠閱讀 149評論 0 0