iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
自我挑戰組

從零開始的工程師轉職之路.新手學Ruby / Ruby on Rails遇到的問題系列 第 16

Day16-[Ruby]存取限制比一比.Public, Protected, Private的比較(Part I)

  • 分享至 

  • xImage
  •  

Day16-[Ruby]存取限制比一比.Public, Protected, Private的比較(Part I)

如果今天,你想限制使用的人存取你的方法,
我們可以用幾種方式,
我們來比較一下這幾個之間的差別。

public(公用的)

系統預設定義是public,
是一種開放的、誰都可以存取的方式。

class Cat
  def eat
    puts "eating..."
  end
end

kitty = Cat.new
kitty.eat  #eating...

像這樣,kitty可以直接提取eat這個方法。

Protected(受保護的)

較public不自由,
不可以直接存取,

class Cat
  protected
  def eat
    puts "eating..."
  end
end

kitty = Cat.new
kitty.eat  #錯誤訊息

但不限定有沒有明確的接收者,
所以用以下兩個方法都可以成功執行。

class Cat
  def do_eat
    eat           #沒有接收者
    self.eat      #有接收者
  end
  
  protected
  def eat
    puts "eating..."
  end
end

kitty = Cat.new
kitty.do_eat 

明天我們再繼續探討Private,明天見!

tags: Ruby public protected

上一篇
Day15-[Ruby]超級比一比.符號、變數、字串三者的差別?
下一篇
Day17-[Ruby]存取限制比一比.Public, Protected, Private的比較(Part II)
系列文
從零開始的工程師轉職之路.新手學Ruby / Ruby on Rails遇到的問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言