0
0

staticについて【初級編】

Posted at

staticとインスタンスの役割

static

  • staticプロパティ(変数)とメソッド(関数)はクラスに関連付けられており、インスタンスではなくクラス自体に属します。
  • クラス名を使ってアクセスすることが求められます。
  • インスタンスからはアクセスできない。
  • staticプロパティ(変数)はクラスの全体で共有されるため、すべてのインスタンスが同じ値を参照します。
  • staticメソッド(関数)はクラスの機能として提供されます。

インスタンス

  • インスタンスプロパティ(変数)は各インスタンスごとに異なる値を持ちます。

具体的なコードで解説

class StaticMembers {
    // static プロパティ
    static stNum: number = 0;

    // インスタンスプロパティ
    num: number = 0;

    // static メソッド
    static countUp(value: number) {
        StaticMembers.stNum += value;
    }
    
    // インスタンスメソッド
    countUp(value: number) {
        StaticMembers.stNum += value;
        this.num += value;
    }
}

// インスタンスを2つ作成
const staticA = new StaticMembers(); // (1)
const staticB = new StaticMembers(); // (1)

// AのcountUp()を引数10で実行
staticA.countUp(10); 

// Aのプロパティをそれぞれ出力
console.log(`staticAのstNum: ${StaticMembers.stNum} num: ${staticA.num}`); 
// 出力する値: staticAのstNum: 10 num: 10

// BのcountUp()を引数5で実行
staticB.countUp(5); 

// Bのプロパティをそれぞれ出力
console.log(`staticBのstNum: ${StaticMembers.stNum} num: ${staticB.num}`); 
// 出力する値: staticAのstNum: 15 num: 5

// StaticMembersのstaticプロパティのみ出力
console.log(`stNum: ${StaticMembers.stNum}`); 
// 出力する値: 15

参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0