サイズ: 2169
コメント:
|
サイズ: 2444
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 41: | 行 41: |
=== クラスメソッドの定義 === クラスメソッドは次のように定義します。 {{{#!highlight ruby def Hoge def Hoge.f (処理) end end }}} メソッド名の頭にクラス名を書けばよいことがわかりますね。 |
クラスもオブジェクト
クラスはオブジェクトを作るための設計図だという話をしました。
ここで驚くべき話があります。実はRubyではクラスもまたオブジェクトなのです!!!!!
RubyではクラスはClassというクラスのインスタンスになっています。
となると当然疑問が湧いてきます。Classというクラスはどのクラスからつくられているの?という疑問です。
答えを正確に説明するのは難しいのですが、ここではClassというクラスのインスタンスは自分自身から作られている、という説明にとどめておきます。
クラスインスタンス変数
クラスもやっぱりオブジェクトなので、今までみてきたオブジェクトと同じように変数を持ったりメソッドを持ったりできます。
最初に、クラス自体のインスタンスが持っている変数についてみていくことにしましょう。
クラス自体のインスタンスが持っている変数をクラスインスタンス変数といいます。そのまんまですね。
クラスインスタンス変数の作りかた
クラスインスタンス変数を作るには次のようにします。
ただのインスタンス変数となにが違うのかみてみましょう。
インスタンスメソッドの中で定義されるとインスタンス変数になり、外で定義されるとクラスインスタンス変数になります。
クラスメソッド
次はメソッドの話です。クラスも通常のオブジェクトと同じようにメソッドを持つことができます。
このようなメソッドをクラスが持っているメソッドなのでクラスメソッドといいます。
クラスメソッドの定義
クラスメソッドは次のように定義します。
メソッド名の頭にクラス名を書けばよいことがわかりますね。
クラスには親子関係がある