18日目③(2025.02.17) static変数・staticメソッドについて


本日の最後は、「static変数・staticメソッド」です!!

static は、以前に学んだ際に、「教室の黒板のようなもの」ということでイメージができていたのですが、せかチャンの菅原先生に教えていただき、更に理解が深まりました!!

たとえば、インスタンスを呼び出す度にカウントを増やしていきたいという場合で、全てのインスタンスが共通して使える変数としてstaticが登場するということでした!!

【設計クラス側での使い方】

★メンバ変数でstaticを使う場合は、データ型変数名のデータ型の前に置く。
static int counter = 0;
★メソッドの場合は、そのメソッドの戻り値の型の前に置く
static void display();

【実行側での使い方】

★クラス名.変数(メソッド)名と記述

【どんな時に使うのか】

★全部のインスタンスから共通して使う変数やメソッドを作りたい時
★このクラスの関連する便利なメソッドをまとめたい時

【staticを入れなかったら・・・】

public class Student {
String name;
int counter = 0;

public Student(String n) {
    name = n;
    counter++;
    System.out.println(name + "さんをインスタンス化しました。");

}

public void display() {
    System.out.println(counter + "人です。");
}
}

public class main {
public static void main(String[]args) {    
    Student stu1 = new Student("サタンクロス");
    stu1.display();
    Student stu2 = new Student("アシュラマン");
    stu2.display();

}
}



サタンクロスさんをインスタンス化しました。
1人です。
アシュラマンさんをインスタンス化しました。
1人です。

といった具合に、それぞれのインスタンスが別々にcountを拾いにいくので、数が増えない、、、

ということでstaticを使うと、、、

public class Student {
String name;
static int counter = 0;

public Student(String n) {
    name = n;
    counter++;
    System.out.println(name + "さんをインスタンス化しました。");

}

public static void display() {
    System.out.println(counter + "人です。");
}
}

public class main {
public static void main(String[]args) { 

    Student stu1 = new Student("サタンクロス");
    Student.display();
    Student stu2 = new Student("アシュラマン");
    Student.display();

}
}




サタンクロスさんをインスタンス化しました。
1人です。
アシュラマンさんをインスタンス化しました。
2人です。

おおー!!
ちゃんとカウントが増えてる!!

うん、めちゃくちゃ理解できたと思う!!


そんなこんなで、18日目は終了です!!



明日も楽しんでいこう!!!

コメントを残す