0 【Ruby】メソッド種類 クラスメソッドとインスタンスメソッドの使い方 みんなに公開
クラスメソッドとインスタンスメソッドの違い
- クラスメソッドは、クラスから実行できる。(=クラスから直接呼び出すことができる。)
- インスタンスメソッドは、インスタンスから実行できる。(=クラスからインスタンスを生成しないと呼び出すことができない。)
[クラス]-->{クラスメソッド}
[クラス]-->[インスタンスを生成]-->{インスタンスメソッド}
クラスメソッド
クラスメソッドの特徴
- メソッドはクラス内で
def self.メソッド名 ~ end
で定義できる。 クラス名.メソッド名
で呼び出せる。
例1)
Class User
def self.hello
p "こんにちは"
end
end
User.hello
例1の実行結果)
"こんにちは"
例2)
class User
class << self
def hello1
p "こんにちは1"
end
def hello2
p "こんにちは2"
end
end
end
User.hello1
User.hello2
例2の実行結果)
"こんにちは1"
"こんにちは2"
クラスメソッドの用途
クラスメソッドはクラス全体に関わる情報を変更したり参照したりするメソッドを作成したいときに使うと便利。
例えば「User」クラスを作成した場合を例にするなら、ユーザ一覧やユーザ全体で共有しているステータスを更新するメソッドを作成する時などに使うと良い。
インスタンスメソッド
インスタンスメソッドの特徴
- メソッドは、クラス内で
def メソッド名 ~ end
で定義できる。 インスタンス.メソッド名
で呼び出せる。
例1)
class User
def hello
p "こんにちは"
end
end
user = User.new
user.hello
例1の実行結果
"こんにちは"
インスタンスメソッドの用途
user = User.new
で「User」クラスからインスタンスを作成し、「user」変数に代入している。user.hello
でインスタンスメソッドを呼び出すことができる。
今回定義した「hello」メソッドはインスタンスメソッドなため、User.hello
のようにして、クラスから呼び出すことはできない。
インスタンスメソッドは、個別のインスタンスに関わる情報を変更したり参照したりするメソッドを作成するときに使うと便利。
例えば「User」クラスを作成した場合を例にすると、特定のユーザインスタンスのプロフィールを表示したり更新したりするメソッドを作成する時に使うと良い。
まとめ
- クラスメソッドは クラス全体に関わる情報を変更したり 参照したりするメソッドを作成するときに、インスタンスメソッドは 個別のインスタンスに関わる情報を変更したり 参照したりするメソッドを作成するときに使うと便利。
コメント(0)