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

広告

アクセス制御を設定するには前のページで確認したとおり「public :メソッド名」又は「private :メソッド名」で個々のメソッド毎に設定していましたが、多くのメソッドを定義する場合はまとめてアクセス制御を設定することが可能です。

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

class Car
  public

  def accele(acceletime=1)
    print("アクセルを踏みました¥n")
    print("スピードは", calcSpeed(acceletime), "Kmです¥n")
  end

  def brake
    print("ブレーキを踏みました¥n")
  end

  private

  def calcSpeed(acceletime)
    return acceletime * 10
  end
end

car = Car.new
car.accele(10)

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

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

サンプルプログラム

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

PrivateTest2.rb

class Car
  private

  def calcSpeed(acceletime)
    return acceletime * 10
  end

  public

  def accele(acceletime=1)
    print("アクセルを踏みました¥n")
    print("スピードは", calcSpeed(acceletime), "Kmです¥n")
  end

  def brake
    print("ブレーキを踏みました¥n")
  end

end

car = Car.new
car.accele(10)

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

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

( Written by Tatsuo Ikura )