0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Javaを基本からまとめてみた【static】

0
Last updated at Posted at 2025-11-24

staticとは?

  • Javaで変数(フィールド)やメソッドにつける修飾子で、「クラスに属する」「インスタンスを生成せずに呼び出せる」という特徴がある

静的メンバ(static)

  • インスタンスの元となるファイル情報を格納しているメモリ領域をクラスオブジェクトという
  • クラスオブジェクトではファイル情報の他にフィールドとメソッドを保有することが可能
  • フィールドをクラス変数、メソッドをクラスメソッド、合わせて静的メンバという
    ※ static修飾子をつけることで静的メンバとして扱うことが可能
  • クラスオブジェクトは変数名としてクラス名が使われる
  • 静的メンバはクラスオブジェクトで管理されるためインスタンス化の際に複製されない
    ※ クラスで固有、全てのインスタンスで共通のものとして扱われる
  • インスタンスから自信のものであるかのようにアクセス可能
Dog.java
package src.static;

class Dog {
    //定数
    public static final SCIENTIFIC_NAME = "Canis familiaris"; //学部名: カニスファミリアーリス

    //フィールド
    private static int dogNumber = 0;
    private static String breed;
    private String name;
    
    //コンストラクタ
    public Dog(String breed, String name) {
        this.dogNumber++;
        this.breed = breed;
        this.name = name;
    }

    //メソッド
    //getStatusメソッド
    public String getStatus() {
        return "犬の全頭数:" + this.dogNumber + "/名前:" + this.name + "/犬種:" + this.breed;
    }
    
    //getter(dogNumber)
    public static int getDogNumber() {
        return dogNumber;
    }
}
Main.java
public class Main {
    public static void main(String[] args) {

        // ①Dogクラスのstaticメンバにアクセスできることを確認
        System.out.println("①Dogクラスのstaticメンバにアクセスできることを確認");
        System.out.println(Dog.SCIENTIFIC_NAME);
        System.out.println(Dog.getDogNumber());

        // ②Dogよりインスタンス化&フィールドの確認
        System.out.println("②Dogよりインスタンス化&フィールドの確認");

        System.out.println("1体目");
        Dog moco = new Dog("ToyPoodle", "MOCO");
        System.out.println(moco.getStatus());

        System.out.println("2体目");
        Dog choco = new Dog("WelshCorgi", "CHOCO");
        System.out.println(moco.getStatus());
        System.out.println(choco.getStatus());

        System.out.println("3体目");
        Dog pochi = new Dog("GoldenRetriever", "POCHI");
        System.out.println(moco.getStatus());
        System.out.println(choco.getStatus());
        System.out.println(pochi.getStatus());

        // ③各オブジェクトからstaticメンバへのアクセス確認
        System.out.println("③各オブジェクトからstaticメンバへのアクセス確認");
        System.out.println("<クラスオブジェクトからアクセス>");
        System.out.println(Dog.SCIENTIFIC_NAME);
        System.out.println(Dog.getDogNumber());

        System.out.println("<インスタンスオブジェクトからアクセス>");
        System.out.println(moco.SCIENTIFIC_NAME);
        System.out.println(moco.getDogNumber());

    }
}

mainにstaticが用いられる理由

public static void main(String[] args){}
  • mainメソッドはJVMから呼び出され、プログラム終了まで動作し続ける必要があるため、クラスオブジェクトの生成のみで使用できるようstaticがつけられる

参考サイト

【ウズカレ式】3日で「Javaプログラミングのオブジェクト指向」が学べる講座<JavaSilver試験対策②>

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?