Java の「静的クラス」とは何ですか? [closed] 質問する

Java の「静的クラス」とは何ですか? [closed] 質問する

static classJava に似たものはありますか?

このようなクラスの意味は何でしょうか? 静的クラスのすべてのメソッドもstatic同様である必要がありますか?

逆の場合も同様に必要ですか? クラスに静的メソッドのみが含まれている場合、クラスも静的である必要がありますか?

静的クラスは何に役立ちますか?

ベストアンサー1

Java には静的なネストされたクラスがありますが、トップレベルの静的クラスを探しているようです。Java ではトップレベルのクラスを静的にすることはできませんが、次のように静的クラスをシミュレートできます。

  • クラスを宣言するfinal- 静的クラスを拡張しても意味がないので、クラスの拡張を防止します。
  • コンストラクタを作成するprivate- 静的クラスをインスタンス化しても意味がないので、クライアントコードによるインスタンス化を防止します。
  • クラスのすべてのメンバーと関数を作成しますstatic- クラスをインスタンス化できないため、インスタンスメソッドを呼び出したり、インスタンスフィールドにアクセスしたりすることはできません。
  • コンパイラはインスタンス(非静的)メンバーの宣言を阻止しないことに注意してください。問題はインスタンスメンバーを呼び出そうとした場合にのみ発生します。

上記の提案に従った簡単な例:

public class TestMyStaticClass {
     public static void main(String []args){
        MyStaticClass.setMyStaticMember(5);
        System.out.println("Static value: " + MyStaticClass.getMyStaticMember());
        System.out.println("Value squared: " + MyStaticClass.squareMyStaticMember());
        // MyStaticClass x = new MyStaticClass(); // results in compile time error
     }
}

// A top-level Java class mimicking static class behavior
public final class MyStaticClass {
    private MyStaticClass () { // private constructor
        myStaticMember = 1;
    }
    private static int myStaticMember;
    public static void setMyStaticMember(int val) {
        myStaticMember = val;
    }
    public static int getMyStaticMember() {
        return myStaticMember;
    }
    public static int squareMyStaticMember() {
        return myStaticMember * myStaticMember;
    }
}

静的クラスのメリットは何でしょうか?静的クラスの良い使い方は、インスタンス化が意味をなさない、1回限りのユーティリティクラスやライブラリクラスを定義することです。良い例としては、PIやEなどの数学定数を含み、単に数学計算を提供するMathクラスがあります。このような場合にインスタンス化を要求するのは不必要で混乱を招きます。Mathクラスとソースコード。それが でありfinal、そのすべてのメンバーが であることに注意してくださいstatic。Java でトップレベルのクラスの宣言が許可されている場合static、Math クラスは確かに静的になります。

おすすめ記事