New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
クラス変数 - Wikipedia

クラス変数

出典: フリー百科事典『ウィキペディア(Wikipedia)』

クラス変数class variable)または、静的メンバ変数static member variable)、静的フィールドstatic field))とは、同一クラス派生クラスで共有される変数である。 そのため、関連クラスに渡って共通に使用できる大域変数(グローバル変数)であるともいえる。 クラス変数はフィールドの一部であるが、インスタンス変数と比べ使われる頻度や重要性が少ないことからインスタンス変数のことだけをフィールドと呼ぶことがある。

UMLではクラス変数のことを、特別な意味を持つ属性としてクラススコープclass scope)と呼ぶ。

目次

[編集] Ruby

本節ではスクリプト言語であるRubyクラス変数の概略を記す。

# Ruby Script
class A
        @@n="Default Value"

        def printClassVariable
                p @@n
        end

        def setClassVariable(var)
                @@n=var
        end
end

class B < A
end

class C < B
end

a = A.new
b = B.new
c = C.new

a.printClassVariable #=> Default Value
b.printClassVariable #=> Default Value
c.printClassVariable #=> Default Value

a.setClassVariable("Value is changed")

a.printClassVariable #=> Value is changed
b.printClassVariable #=> Value is changed
c.printClassVariable #=> Value is changed

[編集] Java

本節では、Java言語におけるクラス変数の例を記す。 [[Ja言語において、static修飾子を使うことで、クラス変数を宣言できる。 下記の例において、2行目で宣言されているfooはクラス変数であり、3行目で宣言されているvarはインスタンス変数である。 冒頭でも説明されているように、クラス変数は同一クラス派生クラスで共有される。ただし、クラス変数がprivateの場合や、パッケージプライベートで派生クラスがパッケージ外にありそのクラスがパッケージプライベートである場合は、派生クラスから参照することはできない。

class Hoge {
  static int foo; //クラス変数
  int var; //インスタンス変数
}

このHogeクラスを実際に使用する例:

public class Main {
  public static void main(String[] args){
    Hoge.foo = 100; //Hogeクラスのクラス変数に100を代入
    Hoge hoge = new Hoge(); //インスタンスを生成
    hoge.var = 20; // 作成したhogeインスタンスのインスタンス変数verに20を代入
    System.out.println("Hoge.foo = " + Hoge.foo); //fooを表示
    System.out.println("hoge.var = " + hoge.var); //varを表示

    //hogeインスタンスでクラス変数fooを読むこともできる(ただし、推奨されない文法)。
    System.out.println("hoge.foo = " + hoge.foo); 


    hoge.foo = 700; //クラス変数fooに700を代入
    hoge.var = 800; //hogeインスタンスのインスタンス変数varに800を代入

    System.out.println("Hoge.foo = " + Hoge.foo); //Hoge.fooを表示
    System.out.println("hoge.foo = " + hoge.foo); //hoge.fooを表示
    System.out.println("hoge.var = " + hoge.var); //hoge.varを表示

    Hoge another = new Hoge(); //インスタンスをもう一つ生成
    another.foo = 777; //クラス変数fooに700を代入
    another.var = 888; //anotherインスタンスのインスタンス変数varに800を代入

    System.out.println("another.foo = " + another.foo); //fooを表示
    System.out.println("another.var = " + another.var); //varを表示

    System.out.println("Hoge.foo = " + Hoge.foo); //Hoge.fooを表示
    System.out.println("hoge.foo = " + hoge.foo); //fooを表示
    System.out.println("hoge.var = " + hoge.var); //varを表示
   
  }
}

実行結果

Hoge.foo = 100
Hoge.var = 20
hoge.foo = 100
Hoge.foo = 700
hoge.foo = 700
hoge.var = 800
another.foo = 777
another.var = 888
Hoge.foo = 777
hoge.foo = 777
hoge.var = 800

この例ではインスタンス変数との違いを示すためにインスタンス変数varを用意した。 クラス変数Hoge.fooとhoge.fooとanother.fooはすべて同一のものであるためどれかに値を代入するとどれを参照しても代入された値となる。この例ではまずHoge.fooに100を代入した。当然100を出力する。hoge.fooはHoge.fooとクラス変数を参照しているため100を出力する。次にhoge.fooに700を代入する。Hoge.fooもhoge.fooもどちらも700を出力する。次に新たにインスタンスanotherを生成する。another.fooに777を代入しanother.varには888を代入する。このとき、当然another.fooは777、another.varは888を出力する。ただし、Hoge.foo、hoge.fooの値は、Hogeクラスで共有されているクラス変数であるためどちらも777になっている。hoge.varは異なるインスタンスの変数であるため800のままである。

[編集] 用途

クラスのインスタンスごとではなくクラスごとに存在するべき情報を記憶するためにクラス変数は用いられる。 クラスごとに存在するべき情報は定数等である。これらをインスタンスごとに作成されるインスタンス変数で記憶した場合、記憶される情報はインスタンス間で同じなので、メモリの利用において無駄があるだけでなく、本来同じであるべき値が異なる値を持つ等といった深刻な問題を引き起こす原因となる。このような状況の、より具体的な一例としては、Singleton パターンでシングルトンオブジェクトを記憶する変数が挙げられる。

[編集] 関連項目


Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu