タグ

ブックマーク / qiita.com/shun_takagi (1)

  • クラス変数とクラスインスタンス変数を理解する - Qiita

    クラス変数とは クラス変数とはクラスで定義する変数である。クラス変数はクラスメソッド内とクラス定義内、またはそのサブクラスがアクセスでき共有される。 定義方法 class A # @@プレフィックスを使用 @@value = 1 def self.value; @@value; end end クラス変数と継承 クラスAが変数@@valueを定義する場合、そのすべてのサブクラスが@@valueを使える。これは継承のように見えるが、実際は違う。どこかのサブクラスがクラス変数@@valueに値を代入すると、クラス変数のプライベートコピーは作成されず、スーパークラスから見える値がすべて変更される。 class A @@value = 1 def self.value @@value end end A.value # 1 class B < A @@value = 2 end A.value #

    クラス変数とクラスインスタンス変数を理解する - Qiita
    akatakun
    akatakun 2024/03/15
    クラス自体もRubyはオブジェクトとして扱うため、@XXXはインスタンス変数であり、小クラスなどからは参照できない。クラス変数は@@XXXで定義できる
  • 1