ログイン
編集不可のページディスカッション情報添付ファイル
"alstamber/2013FreshmanRubySeminar5"の差分

MMA
3と4のリビジョン間の差分
2013-06-07 17:02:12時点のリビジョン3
サイズ: 1597
編集者: alstamber
コメント:
2013-06-07 17:07:49時点のリビジョン4
サイズ: 2169
編集者: alstamber
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 16: 行 16:
=== クラスインスタンス変数の作りかた ===
クラスインスタンス変数を作るには次のようにします。
{{{#!highlight ruby
class Hoge
    @a = (初期値)
end
}}}

ただのインスタンス変数となにが違うのかみてみましょう。

{{{#!highlight ruby
class Hoge
    @a = (初期値)

    def f
        @b = (初期値)
    end
end
}}}
インスタンスメソッドの中で定義されるとインスタンス変数になり、外で定義されるとクラスインスタンス変数になります。

クラスもオブジェクト

クラスはオブジェクトを作るための設計図だという話をしました。
ここで驚くべき話があります。実はRubyではクラスもまたオブジェクトなのです!!!!!

RubyではクラスはClassというクラスのインスタンスになっています。

となると当然疑問が湧いてきます。Classというクラスはどのクラスからつくられているの?という疑問です。
答えを正確に説明するのは難しいのですが、ここではClassというクラスのインスタンスは自分自身から作られている、という説明にとどめておきます。

クラスインスタンス変数

クラスもやっぱりオブジェクトなので、今までみてきたオブジェクトと同じように変数を持ったりメソッドを持ったりできます。
最初に、クラス自体のインスタンスが持っている変数についてみていくことにしましょう。

クラス自体のインスタンスが持っている変数をクラスインスタンス変数といいます。そのまんまですね。

クラスインスタンス変数の作りかた

クラスインスタンス変数を作るには次のようにします。

   1 class Hoge
   2     @a = (初期値)
   3 end

ただのインスタンス変数となにが違うのかみてみましょう。

   1 class Hoge
   2     @a = (初期値)
   3 
   4     def f
   5         @b = (初期値)
   6     end
   7 end

インスタンスメソッドの中で定義されるとインスタンス変数になり、外で定義されるとクラスインスタンス変数になります。

クラスメソッド

次はメソッドの話です。クラスも通常のオブジェクトと同じようにメソッドを持つことができます。
このようなメソッドをクラスが持っているメソッドなのでクラスメソッドといいます。

クラスには親子関係がある

Objectクラス

alstamber/2013FreshmanRubySeminar5 (最終更新日時 2013-06-12 13:47:38 更新者 alstamber)