アマグラミング

プログラミング初心者が勉強したことを復習とメモがてら書いているだけです。

(48)クラス変数について学ぼう

クラス変数について勉強しましょう。

 

クラス内で使用するインスタンス変数はオブジェクトごとに異なる値を

格納できるものでした。

 

それに対してクラス変数はクラスから作成された全てのオブジェクトで共有できる

変数です。

 

全てのオブジェクトで共有されているので、クラスの変数の値を更新した場合

参照すると更新された値を取得することになります。

 

クラス変数の変数名は@@で始めます。

 

クラス変数は定数と同じように、クラス内のメソッドの中ではない場所で定義します。

 

ちょっと書いてみます。

 

class Cats
@@many = 0
def initialize(catName)
@name = catName
@@many += 1
end
def number
return @@many;
end
end
cat1 = Cats.new("たま")
cat2 = Cats.new("トロ")
print("猫は", cat1.number,"匹にゃ")

 

f:id:tiroru17:20170619001852p:plain

 

こんな感じ。

最初にクラス変数を初期化@@many = 0しています。

これは最初のオブジェクトを作ったに実行されていますが、

それ以降は実行されていません。

initializeメソッドの中でのクラス変数の更新はオブジェクトを作成するたびに

実行されています。

 

また上記ではcat1を使っていますが、cat2オブジェクトを使ってクラス変数を参照しても同じです。