【結論】
・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なメソッドになります。
参考情報
[Ruby] privateメソッドの本質とそれを理解するメリット - Qiita
《今日の学習進捗(3年以内に10000時間に向けて)》
学習開始からの期間 :279日
今日までの合計時間:2610h
一日あたりの平均学習時間:9.4h
今日までに到達すべき目標時間:2548h
目標との解離:62h
「10,000時間」まで、
残り・・・「7390時間!」