4

継承可能ではなく、動作が静的である必要があるクラスを作成する方法を教えてください (つまり、インスタンスを作成できないことを意味します)。定数値を格納するには、このクラスが必要です。ありがとう。

4

8 に答える 8

9
public final class MyClass { 
    private MyClass() { }
}

finalキーワードにより継承できなくなります。コンストラクターを作成すると、インスタンス化されるのを防ぐのにprivate役立ちます。

于 2012-10-01T05:17:02.017 に答える
6

final継承できないクラスにキーワードを使用できます。ただし、使用することをお勧めしますEnumsEnumsは継承できず、定数値ごとに 1 つのインスタンスのみが存在します。また、 でさらに多くのことができますenums

public enum DaysOfweek
{
    SUNDAY,MONDAY.....
}

ここで列挙型の詳細を読むことができます列挙型

于 2012-10-01T05:19:47.407 に答える
4

いくつかの static 変数と final 変数を持つインターフェイスを使用しないのはなぜですか?

于 2012-10-01T05:16:41.950 に答える
3
  • 最初のケースでは、final継承できないためクラスを使用できます。
  • 2 番目のケースでは、 を使用できますinterface。これらは、 の保存に非常によく使用されConstantsます。

ただし、両方を一緒に持つことはできません(を使用できないため、意味がありません).. したがって、最良の方法は、1 つのクラスで両方のプロパティを混在させることです.. with変数を使用できます。インターフェイスで変数を作成し、 ..の目的に役立ちますinterfaceimplemented
final classpublic static finalconstantconstants

public final class A {
    public static final int YOUR_CONST = 5;

}

このクラスのインスタンスを作成したくない場合は、その中に を含めることができますprivate 0-arg constructor

public final class A {
    public static final int YOUR_CONST = 5; 

    private A() {}

}
于 2012-10-01T05:17:49.753 に答える
2

以下は、定数値を含むクラスの例です。

public final class Trial // it is the FINAL
{
    private static final int CONSTANT_VALUE = 666;

    private Trial() // it is PRIVATE instead of PUBLIC
    {
    }

    public static int getConstantValue()
    {
       return CONSTANT_VALUE;
    }
}

上記のクラスをテストする方法の例を以下に示します。

public class Bully //extends Trial ////"extends" WILL NOT COMPILE
{
    public static void main(String[] args)
    {
        //Trial trial = new Trial(); ////"new Trial()" WILL NOT COMPILE

        // The only thing can be done is getting a constant value from "Trial"
        int acquiredValue = Trial.getConstantValue();
        System.out.println(acquiredValue);
    }
}

お役に立てば幸いです:))

于 2012-10-01T05:34:08.503 に答える
2

他のクラスがそれを拡張することを許可しない final として宣言し、そのコンストラクターをプライベートにして、他の誰も (自分のクラスを除く) インスタンス化できないようにします。

public final class MyClass {

    private MyClass() {
        // Private so noone else can instantiate this
    }

}
于 2012-10-01T05:21:22.693 に答える
1
public final class MyClass {
    public static string MY_STRING;
    public static int MY_INT;

    private MyClass() {}
}
于 2012-10-01T05:18:38.157 に答える
1

final : クラスを final にします。これは、このクラスがそれ以上継承できないことを意味します。static : すべてのメソッドが静的である場合、このクラスのインスタンスを作成する必要はありません。動作が静的である必要があります。

シングルトン パターン : すべてのメソッドが静的ではなく、複数のインスタンスを作成したくない場合は、コンストラクターをプライベートにして、クラス オブジェクトの 1 つの変数をクラスに保持できます。null の場合は 1 回作成し、null でない場合は常に同じインスタンスを返します。

ありがとう

于 2012-10-01T05:23:52.970 に答える