LoginSignup
3
0

More than 5 years have passed since last update.

クラスメソッドとインスタンスメソッド

Posted at

クラスメソッドとインスタンスメソッド

前回の続きで今回はこちらのテーマで書いていきたいと思います。
クラスとインスタンスについてわからない場合は
こちらを参考にしてみてください。

クラスメソッド

クラスメソッドは定義したクラス自身が使えるものであり、クラスで共通の情報を持った処理に使います。

では、共通の情報とは何か?
前回と引き続き学校のクラスを例にとって考えてみましょう。
クラスには生徒がいて、生徒の総数がありますね、これはクラスがクラス内共通の値です。他にも、机の数や、受ける授業などもクラス内共通だと思います。

クラスメソッドの定義

それでは上記に書いた生徒の総数をコード内に定義していきます。

school.rb
class Student

   def self.students_count
   puts "生徒の総数は30人です。"
   end

end

student = Student.new

これで定義できました。クラスメソッドを定義するときはメソッド名の前にselfをつけます。
この後、メソッド内に処理を記述することにより実行する事ができます。

インスタンスメソッド

インスタンスメソッドはインスタンスが使用するものであり、個別の情報を使った処理に使います。
学校を例にとるのであれば、生徒一人一人に対する情報に対した処理という事です。
例えば生徒の身長という個々の情報を例にとると、
その身長を「測る」や「書く」、「見る」のような処理が浮かぶと思います。

インスタンスメソッドの定義

それでは身長という情報を「見る」というメソッドを定義していきたいと思います。

school.rb
class Student

   def self.students_count
   puts "生徒の総数は30人です。"
   end

   def show_student_height
     puts "私の身長は170cmです。"
   end

end

student = Student.new

これでインスタンスメソッドの定義ができました。
インスタンスメソッドの場合はクラスメソッドのようにメソッド名の前にselfなどをつける必要はありません。

ちなみに上に書いた「puts」は実行した際に表示をするというメソッドです。
上のshow_student_heightを実行すれば、puts以降の「私の身長は170cmです。」が出力されます。

最後に

今回はクラスメソッドとインスタンスメソッドについて説明していきました。
クラスメソッドはクラス内共通の処理
インスタンスメソッドは個別の情報に対する処理
ということを覚えておきましょう。
次回はクラス変数、インスタンス変数について説明していきたいと思います。

最後まで読んでいただきありがとうございました。

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