Privateメソッドについて(Ruby)

f:id:ryoutaku_jo:20190913032131p:plain

【結論】

・Privateメソッドとは、同じクラスのインスタンスメソッドからしか呼び出せないメソッド

・Privateメソッドは、暗黙的にselfから呼び出されるので、オブジェクトから明示的に呼び出すことは出来ない

・同じクラス内でしか使用しないメソッドが、意図せずクラス外に呼び出されることを防ぐ

【目次】

【本題】

メソッドへのアクセス制限

あるクラスで定義されたメソッドは、そのクラスのオブジェクトから実行することで、クラス外でも実行することが出来ます。

しかし、クラス内での使用のみ想定して定義されたメソッドが、そのクラスの外で呼び出されてしまうと、意図せぬ挙動が発生するリスクが生じます。

それを防ぐのが、Privateメソッドです。

Privateメソッドとは

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

class Post
  def display_public
    'public'
  end

  private

  def display_private
    'private'
  end
end

post = Post.new

post.display_public
#=>'public'

post.display_private
#=>NoMethodError (private method `display_private' called for #<Post:0x00007fd673974428>)

上記のコードだと、private以下に記述されているset_postがprivateなメソッドになります。

参考情報

private (Module) - Rubyリファレンス

アクセス制御とは - アクセス制御 - Ruby入門

Rubyのprivateメソッドについて - Qiita

[Ruby] privateメソッドの本質とそれを理解するメリット - Qiita

《今日の学習進捗(3年以内に10000時間に向けて)》

学習開始からの期間 :279日
今日までの合計時間:2610h
一日あたりの平均学習時間:9.4h
今日までに到達すべき目標時間:2548h
目標との解離:62h
「10,000時間」まで、

残り・・・「7390時間!」