デイトラDay27 学習記録 「RubyのClass」
Classとは、メソッドなどの処理を入れる器のようなもの。
Rubyでは、メソッドは基本的にClass内で定義して使う
1、Classを作る
Classは以下のようにして、定義する。
class クラス名
#処理
end
class Taiyaki
def initialize(taste,price)
@taste = taste
@price = price
end
end
taiyaki = Taiyaki("anko", 100) #インスタンス生成
initializeというインスタンスメソッドは、インスタンス.new(引数)でインスタンスを生成したとき、最初に実行されるメソッドである。
2,Classの機能
・private
クラス内でしか使えないようにするprivateメソッドというものがある
class User
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def discrive
puts fullname #privateメソッド呼び出し
end
private
def fullname
return "#{@first_name} #{@last_name}"
end
end
user = User.new("John", "Smith")
user.discrive #Johm Smithと出力
user.fullname #エラー
privateメソッドを使う理由は、インスタンスから使えるメソッドは最小限のほうがいいから。
・self
selfとはクラスから生成された、インスタンス(オブジェクト)そのものを表す。selfをよく使うときは2つです。
1,インスタンス変数の参照
class User
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
attr_accessor :first_name,:last_name
def fullname(first_name, last_name)
self.first_name = first_name #「self.first_name」は@first_nameと一緒
self.last_name = last_name #「self.last_name」は@last_nameと一緒
end
2,クラスメソッドを定義するとき
def self.メソッド名とすると、クラスから使えるメソッドを定義できる
class User
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def self.create(first_name,last_name)
user = self.new(first_name,last_name)
user
end
end
user = User.create("John", "Smith") #クラスからメソッドを呼び出し
・クラスの継承
子クラス < 親クラスで継承できる
class premium_user < user
def メソッド名
#追加したい処理
end
end
継承すれば、親クラス内のメソッド、インスタンス変数を使うことができる。
この記事が気に入ったらサポートをしてみませんか?