アマグラミング

プログラミング初心者が勉強したことを復習とメモがてら書いているだけです。

(53)アクセス制限について学ぼう

アクセス制限について勉強しましょう。

クラスの中でメソッドを定義すると、インスタンスメソッドとして呼び出すことができます。ただし、クラスの内部だけでしか使わない(外部に公開する予定の無い)メソッドも同じように呼び出せては困ります。そのような時に以下のメソッドを使うことによって、メソッドの可視性を変えることができます。

引用元

http://www.minituku.net/courses/566428009/contents/854733621.html

 

  • public
  • private
  • protected

で、上の3つがあるわけですが、

 

 

publicで設定されたメソッドはパブリックメソッドと呼びます。

普通はこれになります。(initializeメソッドは除く)

 

privateはメソッド定義をしたクラスかそのクラスを継承したクラスのメソッドの中で

呼び出せます。

 

つまり関係ないとこからは呼び出せない。

 

protectedはあまり使われないらしい、説明を呼んでもちょっと理解できない。

のでまた今度にします。

 

で、publicは普通の状態なのでいいです。

 

例えば、privateメソッドの使い方は(3つとも使い方の書き方自体は同じ)

 

class Cats

def looks
puts "可愛い"
puts "4本足"
end

 

private :looks

 

こう書くか

 

class Cats

 

private

 

def looks
puts "可愛い"
puts "4本足"
end

 

こう。

 

1つ目の方法は個別に設定しているけど

2つ目の方法はまとめてアクセス制限をする方法で、

以降の定義されたメソッドは同じアクセス制限を受けるけど

途中で例えばpublicにすれば

それ以降はまたその同じアクセス制限になる

 

 

privateにしてしまうと

例えば

 

cat = Cats.new

cat.looks

 

みたいなことは出来ない。

クラスの外だから。

 

initializeメソッドも同じ。