継承可能ではなく、動作が静的である必要があるクラスを作成する方法を教えてください (つまり、インスタンスを作成できないことを意味します)。定数値を格納するには、このクラスが必要です。ありがとう。
8 に答える
public final class MyClass {
private MyClass() { }
}
final
キーワードにより継承できなくなります。コンストラクターを作成すると、インスタンス化されるのを防ぐのにprivate
役立ちます。
final
継承できないクラスにキーワードを使用できます。ただし、使用することをお勧めしますEnums
。Enums
は継承できず、定数値ごとに 1 つのインスタンスのみが存在します。また、 でさらに多くのことができますenums
。
public enum DaysOfweek
{
SUNDAY,MONDAY.....
}
ここで列挙型の詳細を読むことができます列挙型
いくつかの static 変数と final 変数を持つインターフェイスを使用しないのはなぜですか?
- 最初のケースでは、
final
継承できないためクラスを使用できます。 - 2 番目のケースでは、 を使用できます
interface
。これらは、 の保存に非常によく使用されConstants
ます。
ただし、両方を一緒に持つことはできません(を使用できないため、意味がありません)..
したがって、最良の方法は、1 つのクラスで両方のプロパティを混在させることです.. with変数を使用できます。インターフェイスで変数を作成し、 ..の目的に役立ちますinterface
implemented
final class
public static final
constant
constants
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() {}
}
以下は、定数値を含むクラスの例です。
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);
}
}
お役に立てば幸いです:))
他のクラスがそれを拡張することを許可しない final として宣言し、そのコンストラクターをプライベートにして、他の誰も (自分のクラスを除く) インスタンス化できないようにします。
public final class MyClass {
private MyClass() {
// Private so noone else can instantiate this
}
}
public final class MyClass {
public static string MY_STRING;
public static int MY_INT;
private MyClass() {}
}
final : クラスを final にします。これは、このクラスがそれ以上継承できないことを意味します。static : すべてのメソッドが静的である場合、このクラスのインスタンスを作成する必要はありません。動作が静的である必要があります。
シングルトン パターン : すべてのメソッドが静的ではなく、複数のインスタンスを作成したくない場合は、コンストラクターをプライベートにして、クラス オブジェクトの 1 つの変数をクラスに保持できます。null の場合は 1 回作成し、null でない場合は常に同じインスタンスを返します。
ありがとう