0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【備忘録】Ruby : privateメソッドの使い方

Posted at
sample.rb

require 'date'

class User
	attr_accessor :name,:birthday

	def initialize(name,birthday)
		@name = name
		@birthday = birthday
	end

	def display_birthday
		@birthday.strftime("%Y年 %m月 %d日")
	end

	def inner_call_display_birthday
		self.display_birthday
		# self は省略可能。オブジェクト化して外部から呼び出した場合、
		# この self がオブジェクト自体を指す。
		# 下の例でいうと user を指す。
		display_birthday
	end

	def call_private_name
		private_name
		# インスタンスメソッドからならprivateメソッドを呼び出せる。
		# しかし冒頭に self をつけるとエラーになるので注意。selfはオブジェクト自体をさす。
		# selfをつけないメソッドの呼び出しを「関数形式」というらしい。
	end

	private #ここより下に定義されたメソッドは private メソッドになる

	def private_name
		#クラス外部から直接呼び出すことは不可能
		#同じクラスのインスタンスメソッドからなら呼び出して使える。
		@name
	end
end

birthday = Date.new(2000,1,1)
user = User.new("sato",birthday)
puts user.inner_call_display_birthday #=> 2000年01月01日
#puts user.private_name => private_name は private メソッドなので外部から呼び出し不可
puts user.call_private_name #=> sato

## おまけ
# あまり使うことはないがprotectedメソッドも同じように定義し、protectedメソッドでは self
# をつけても大丈夫


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?