2016-04-05 19 views
4

私は静的メソッドのみを持つクラスを持っています。クラスそのものも静的にするべきですか?それは問題ですか?静的メソッドのみを持つクラスは静的であるべきですか?

+6

そこには正しいか間違っているが、ここではありませんが、それは '新しいYOURCLASSを()'を行うには意味がありませんので、ほとんどの場合、はい、あなたはそれが静的にする必要があります。 –

+2

@ LasseV.Karlsen 'YourClass'は' YourClass.doSomething(); 'を行うために静的である必要はありません。 'doSomething()'だけが静的でなければなりません。 – Guy

+0

@Guy確かに、Lasseは静的メソッドだけでインスタンス化するのは意味がないと言っていたので、とにかく静的であるはずです。 –

答えて

6

重要ですか?

クラスを静的にすると、ユーザーがそのようにしようとすると、コンパイラエラーを生成することによってインスタンス化できないことが保証されます。静的メンバーだけで構成されるクラスが単にインスタンス化されることを意図していない場合、それを静的にしない理由はありません。そうしないこともできますが、そのようなクラスのインスタンスはあまり役に立たないので、これらのインスタンスを作成するユーザーはかなり混乱することになります。

一方、このクラスのインスタンスを作成しようとしているが、派生クラスが独自のインスタンスメンバーを実装することを期待している場合、このクラスは静的ではなく抽象クラスである必要があります抽象的な定義やインタフェースを介して先行して記述する必要があります)。

2

一般的にはい:はい。

クラスstaticを作成することによって、プログラマが特定のクラスのオブジェクトインスタンスを作成しないようにすることができます。これがあなたの意図であれば、それをやりなさい。これは、クラスがインスタンス化されることを意図していないことを他の同僚などに示すことによって、間違いを防止します。


public static class A 
{ 
    // Some static member 
} 

A a = new A(); // Compilation error 
関連する問題