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