概要
自分自身が初めてクラスとインスタンスを学習した際に苦労したため、その際にメモしたものをアウトプットの練習を兼ねて記事にしました。
自分自身まだまだ知識が浅く間違いがあるかもしれませんが、その際は優しくご指摘・アドバイス頂けると幸いです。
よろしくお願いします。
クラスとインスタンスの概要
クラスとインスタンスの関係は設計図とその設計図から作られた実物体というような説明がよくされます。
これは後々でてくるnew
メソッドを使ったインスタンスの作成方法の部分で上記の説明がわかると思います。
クラスから作られたインスタンスは共通の性質を持ちながらも、そのインスタンスごとに特有の性質を持たせることができるようになります。
クラスの定義方法
クラスの定義にはclass
というキーワードを使います。
例えばHuman
クラスというクラスを作るとします。
class Human
# このなかにクラスのメソッドや持たせたいデータを書いていく
end
インスタンスの作成方法
インスタンスは先ほどのクラスに対してnew
メソッドを呼び出すことで作成できます。
Human.new
とするだけです。
これによりクラスからインスタンスを作成することができます。
また、インスタンスの作成時に使えるメソッドとしてinitialize
メソッドがあります。
このメソッドはインスタンスの作成時に自動で呼び出すことができるメソッドです。
class Human
# このなかにクラスのメソッドや持たせたいデータを書いていく
def initialize
#インスタンス生成時に実行したい処理を書く
end
end
インスタンス変数とインスタンスメソッド
インスタンス変数はインスタンスごとに保持できる値を変えられる変数になります。
また、インスタンスメソッドはクラスのインスタンスに対して呼び出せるメソッドです。
class Human
# このなかにクラスのメソッドや持たせたいデータを書いていく
def initialize(name)
# インスタンス生成時に実行したい処理を書く
# インスタンス変数
@name = name
end
# インスタンスメソッド
def show_name
puts @name
end
end
インスタンス変数とインスタンスメソッドを定義すると上記のようなコードになります。
アクセサメソッド
Rubyでゲッターとセッターを定義する際に便利なattr_accessor
メソッドというものがあります。
def クラス名
attr_accessor :age
end
上記のように変数を書くことによりゲッターとセッターを自動で定義してくれます。