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