アクセス制限をまとめて設定する

メソッドに対するアクセス制限を設定するには、個々のメソッドに対して public または private (または protected )を設定しますが、多くのメソッドを定義する場合はまとめてアクセス制限を設定することが可能です。ここでは Ruby でメソッドに対するアクセス制限をまとめて設定する方法について解説します。

(2022 年 10 月 13 日公開 / 2022 年 10 月 23 日更新)

アクセス制限をまとめて設定する

プログラム中に public とだけ記述すると、それ以降に定義されたメソッドはすべて public なメソッドとなります。また同じように private とだけ記述すると、それ以降に定義されたメソッドはすべて private なメソッドとなります。

例えば次のようにように記述します。

class Car
  public

  def accele
    puts("アクセルを踏みました")
    speedChange
  end

  def brake
    puts("ブレーキを踏みました")
    speedChange
  end

  private

  def speedChange
    puts("スピードが変わりました")
  end
end

car = Car.new
car.accele
car.brake

上記の例では public のあとに「accele」メソッドと「brake」メソッドが定義されており、この2つのメソッドは public なメソッドとなります。またその後で private のあとに「calcSpeed」メソッドが定義されており、このメソッドは private なメソッドとなります。

これは次のように一つ一つのメソッドに対して設定した場合と同じです。

class Car
  def accele
    puts("アクセルを踏みました")
    speedChange
  end

  public :accele

  def brake
    puts("ブレーキを踏みました")
    speedChange
  end

  public :brake

  def speedChange
    puts("スピードが変わりました")
  end
  
  private :speedChange
end

car = Car.new
car.accele
car.brake

このようにアクセス制限が同じメソッドをまとめて記述することで複数のメソッドに対してまとめてアクセス制限を設定することが可能です。

サンプルコード

では実際にサンプルを試してみます。

# encoding: UTF-8

class Car
  public

  def accele
    puts("アクセルを踏みました")
    speedChange
  end

  def brake
    puts("ブレーキを踏みました")
    speedChange
  end

  private

  def speedChange
    puts("スピードが変わりました")
  end
end

car = Car.new
car.accele
car.brake

上記を実行すると次のように表示されます。

アクセス制限をまとめて設定する

-- --

Ruby でメソッドに対するアクセス制限をまとめて設定する方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。