Rubyリファレンス: Home

protected (Module)

Edit   History

標準クラス・モジュール > Module > protected

private

protected

クラス定義やモジュール定義の中でprotectedメソッドを呼び出すと、それ以降に定義されるインスタンスメソッドはprotectedなメソッドになります。戻り値はクラスやモジュール自身です。

次の例では、protectedを呼び出したあとに定義しているsecret_pointメソッドがprotectedメソッドになります。

class Product
  include Comparable
  def initialize(point)
    @secret_point = point
  end
  
  def <=>(other)
    secret_point <=> other.secret_point
  end
  
  protected  # これ以降はprotected
  def secret_point
    @secret_point
  end
end
 
p1 = Product.new(70)
p2 = Product.new(90)
puts p2 > p1
true
protected(name, ...)

protectedメソッドにシンボルか文字列で引数を渡すと、その名前を持つメソッドだけをprotectedなメソッドにします(メソッド名は複数指定できます)。

次の例では、secret_pointメソッドがprotectedメソッドになります。

class Product
  include Comparable
  def initialize(point)
    @secret_point = point
  end
  
  def <=>(other)
    secret_point <=> other.secret_point
  end
  
  def secret_point
    @secret_point
  end
  protected :secret_point
end
 
p1 = Product.new(70)
p2 = Product.new(90)
puts p2 > p1
true

関連項目