はじめに
クラスとインスタンスについての理解が浅かったので、振り返ってみます。
誤っている箇所などありましたら、コメントいただけますと幸いです。
Class
クラスとは
クラスとはオブジェクトの設計図の意味。クラスには、オブジェクトが持つべきデータや振る舞いを定義するためのメソッドが含まれます。
オブジェクト…Rubyでは扱う全てのデータはオブジェクトとして扱う。
- 例「あ」はStringクラスのオブジェクト
class User
end
user = User.new
p user
実行結果
root@5h456ef47u74:/app$ ruby class_ex.rb
#<User:0x00007f1667d55093>
クラスはClassキーワードを使用し定義します。
User.new
…Userクラスのインスタンスを作成
#<User:0x00007f1667d55093>
…Userはクラス名、0x00007f1667d55093はインスタンスのオブジェクトID
オブジェクトIDは、Rubyが各オブジェクトを認識するためのものであり、オブジェクト毎に異なります。
インスタンスは、クラスの設計図に基づいて作成されたオブジェクトのことです。クラスに属性やメソッドを定義することで柔軟にオブジェクトを生成することができます。
initializeメソッド
initializeメソッドとは?
クラスのインスタンスが生成される毎に実行されるメソッドのこと。インスタンスの初期化を行います。
class User
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def info
"#{@first_name}, #{@last_name}"
end
end
user = User.new("山田", "太郎")
p user
puts user.info
実行結果
root@5h456ef47u74:/app$ ruby initialize_ex.rb
#<User:0x00007f1667d55093 @first_name="山田", @last_name="太郎">
山田, 太郎
以上のコードでは、initialize
メソッドを使ってUserクラスのインスタンスを生成するときに、first_nameとlast_nameという初期値を設定しています。
User.new
に渡している引数がそのままinitialize
メソッドの引数に渡されています。
@first_name="山田", @last_name="太郎"
は、インスタンスが使用できる変数で、インスタンス変数と言います。
インスタンス変数が定義されたことでinfoメソッドを呼び出すと、山田, 太郎
という文字列が返ってきます。
振り返ってみて
Classやインスタンスはグループ分けのようなものと考えるのが良いと感じました。
Railsを使っていく上でも理解しておかないと苦労しそうなのでもっと理解を深めます