Ruby 自己学習メモ3
今回は、Rubyのクラスを中心に自己学習した内容をまとめておく。
自己学習メモ2
自己学習メモ1
クラスの定義と呼び出し
Rubyのクラスを定義させるには、以下のようにclassを使うことによって定義できます。
class クラス名 "ここにクラスの定義等を入れておく" end
クラス名は大文字で始める必要があるので留意しておく。
「クラス名.new」により、インスタンス化してオブジェクトを生成することができます。
クラスの定義には、変数やメソッド、initializeメソッドを定義します。
Rubyのメソッドには4種類があり、まずはインスタンスメソッドとクラスメソッドの違いについてはっきりさせておきたいと思う。
クラスにおける変数取り扱いについて
クラス内に使える変数は
ローカル変数、グローバル変数、インスタンス変数、クラス変数の4種類に分けられ、それぞれの用途や特徴については以下通り。
ローカル変数
変数の先頭文字がアルファベットの小文字 or 「_」で始まるもの。
グローバル変数
変数の先頭文字が「$」で始まるもの。
プログラム全体に対して定義される変数でプログラムのどこからでも参照、変更することができる。
インスタンス変数
変数の先頭文字が「@」で始まるもの。
オブジェクトのクラスを定義する際にその内部で使用される変数として定義されるもの。実行時にインスタンス毎に領域が確保され、それぞれが固有の値を取る。別名メンバ変数と呼ばれることも。
クラス変数
変数の先頭文字が「@@」で始まるもの。
クラス変数はそのクラスの全てのインスタンスで共有される変数。
initializeメソッド
名前通りinitializeメソッドとはインタスタンスを生成したときに必ず呼ばれるもので、主に初期化するときなどに使われます。
もしインスタンスを作る時に初期化しなくてもよい場合はinitializeメソッドを定義しなくても問題ありません。
class Greeting def initialize(name: "名無しさん") @name = name end def hello puts "#{@name}、おはようございます。" end end # クラス呼び出し # 引数ありの場合 g = Greeting.new(name: "山田さん") g.hello #=> 山田さん、おはようございます。 # 引数なしの場合 g = Greeting.new g.hello #=> 名無しさん、おはようございます。
newに引数があるときは、initializeメソッドの引数に渡されます。