はじめに
Ruby初心者や。「クラスメソッドとかインスタンスとかなんぞや」って方が理解できるようにしました
クラスの基本文法は理解している前提で說明します。
私も現在Ruby学習中で、あまり理解ができていませんでした。誰かのお助けになれば幸いです。
本題
例としてこのようなクラスがあるとします。
class Sample
def self.hello
puts "Hello!これはクラスメソッドです"
end
def hello
puts "Hello!これはインスタンスメソッドです"
end
end
インスタンスメソッド
インスタンス/インスタンスオブジェクト
例のコードをもとに説明するとSampleクラスから.newをして生成したものをインスタンスオブジェクトと呼びます。
instance = Sample.new
#insanceはSampleクラスのインスタンスオブジェクトです
インスタンメソッドとはインスタンスを生成して初めて実行できるメソッドです。
class Sample
#def self.hello
# puts "Hello!これはクラスメソッドです"
#end
def hello
puts "Hello!これはインスタンスメソッドです"
end
end
Sample.hello # => undefined method `hello' for Sample:Class (NoMethodError)
sample = Sample.new
sample.hello # => Hello!これはインスタンスメソッドです
インスタンスオブジェクトを生成前にSampleクラスのインスタンスメソッドhello
を実行するとエラーが発生しました
クラスメソッド
クラスメソッドとはクラスに紐付いているメソッドであり、インスタンスオブジェクトを生成する前から実行できる(クラスに直接実行できる)メソッドです。
クラスメソッドは通常、クラスの状態や振る舞いを管理するために使用されます。例えば、特定の条件に基づいてインスタンスを生成するメソッドや、クラスの変数や定数を操作するメソッドなどがクラスメソッドとして定義されることがあります。クラスメソッドは通常、メソッド名の前に「self.」を付けて定義されます。
class Sample
def self.hello
puts "Hello!これはクラスメソッドです"
end
#def hello
# puts "Hello!これはインスタンスメソッドです"
#end
end
Sample.hello # => Hello!これはクラスメソッドです
またselfのプレフィックスはクラスの名前に置き換えることもできます。
class Sample
def self.hello
puts "Hello!これはクラスメソッドです"
end
def Sample.hello
puts "Hello!これはクラスメソッドです"
end
end
#上記2つのメソッドはクラスメソッドです
おわりに
今回の記事の他にもDockerやLinux、webの知識について、できるだけ初心者でもある程度理解ができるよう説明した記事がありますのでよければご覧下さい。