導入
「犬」という概念があって、そこから「ポチ」「ハチ」といった個々の犬(インスタンス)が作られる――そんな「型」と「実体」の関係をプログラムで表現するのがクラスです。
説明
class クラス名 ... end でクラスを定義します。initialize は、そのクラスから new でオブジェクトを作るときに自動的に呼ばれる特別なメソッドです。
class Dog
def initialize(name)
@name = name
end
def bark
puts "#{@name}: ワン!"
end
end
pochi = Dog.new("ポチ")
pochi.bark
hachi = Dog.new("ハチ")
hachi.bark
Dog.new("ポチ")を呼ぶとinitialize(name)が実行され、@name = "ポチ"が設定された新しいDogオブジェクトができます。@nameのように@で始まる変数はインスタンス変数と呼ばれ、そのオブジェクトの中でずっと保持される値です。他のメソッド(barkなど)からも@nameを参照できます。pochiとhachiはそれぞれ別々の@nameを持つ、別々のオブジェクトです。
やってみよう
Dog クラスに新しい犬(例えば taro = Dog.new("太郎"))を作って、それぞれの bark を呼んでみましょう。initialize の引数を増やして(例えば age)、新しい @変数 を追加してみるのもよい練習です。
演習
Cat クラスを定義し、initialize(name) で @name を設定し、meow メソッドで "#{@name}: ニャー" と表示してください。Cat.new("タマ") を作って meow を呼び出してください。
ヒント1を見る
class Cat def initialize(name) @name = name end def meow puts "#{@name}: ニャー" end end のように書きます。
ヒント2を見る
Cat.new("タマ").meow のように続けて呼ぶこともできます。