LoginSignup
2
0

初心者でも分かるRubyのインスタンスメソッド・クラスメソッドについて

Last updated at Posted at 2023-05-17

はじめに

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の知識について、できるだけ初心者でもある程度理解ができるよう説明した記事がありますのでよければご覧下さい。

2
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
2
0