Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

Javaプログラマーが学ぶRuby基礎/アクセス制御

概要

Rubyのアクセス制御について説明します。

内容

Rubyのアクセス制御には以下の3種類があります。

名称 内容
public インスタンスメソッドとして利用可能 ※記述を省略した場合はpublic扱い
protected クラス内でメソッドを利用可能+インスタンス内ではインスタンスメソッドとして利用可能
private クラス内でメソッドを利用可能

構文1

メソッド1つに対してアクセス制御を設定する場合

def method_name;expression;end
access_level:method_name # => access_level = public,protected,private

構文2

該当箇所以下の全てに対してアクセス制御を設定する場合

access_level # => access_level = public,protected,private
def method_name1;expression;end
def method_name2;expression;end

構文1サンプル

class AccessControlSample
  def private_sample
    puts "private"
  end
  private:private_sample
  
  def protected_sample
    puts "protected"
  end
  protected:protected_sample
  
  def public_sample
    puts "public"
    self.protected_sample
    private_sample
  end
  public:public_sample
end

access_control_sample = AccessControlSample.new
access_control_sample.public_sample

構文2サンプル

class AccessControlSample
  def public_sample
    puts "public"
    private_sample1
    private_sample2
  end
  
  private # ここから下のメソッドは全てprivateになる
  def private_sample1
    puts "private1"
  end
  
  def private_sample2
    puts "private2"
  end
end

access_control_sample = AccessControlSample.new
access_control_sample.public_sample