2017-05-15 9 views
0

クラスに静的でないクラスメンバーがない場合は、クラス内のすべてのメソッドを静的にすることをお勧めしますか? 独自のインスタンス変数を持たない何らかの種類のマネージャのように。静的でないクラスメンバーがない場合、クラスを静的にする必要がありますか?

+0

実際、私は、そのようなクラスのすべてのメソッドを静的にしないことをお勧めします。しかし、私はそれが意見の問題だと思う。誰かが反対を主張するならば、私はあまり驚かないだろう。 –

+1

静的メソッドはインターフェイスを実装できないことに注意してください。クラスにインスタンスフィールドがない場合でも、インターフェイスを実装することができます。 –

+1

@Andy良い点。 java.lang.Runnableインタフェースhttps://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html インスタンスがスレッド上で実行されるようにします。 – Dachstein

答えて

0

クラスがインスタンスを持たない場合、すべてのメソッドは静的でなければなりません。myInst.myFunc()を呼び出す唯一の方法です(myInstは存在しないため)。

これが関連している可能性がある:Static Classes In Java

Mathの例では、PI、Eなどの異なる定義を持つことができ

Math myCalculator = new Math() 
myCalculator.multiply(x,y); 

myCalculatorない限り、しなければならないことが混乱するだろう、良いものです。

だから、要するに、はい、いいえ非静的メンバを持っていないクラスは何もなく、静的メソッド

を持つべきではありません

編集:アンディ・トーマスは、それは二つのことを掛けることができますので、あなたのMathは、Multipliesインタフェースを実装するかもしれません

良い点を作りました。同時に、私のMultiplierAndAdderクラス(私はそれがひどいクラスだとわかりますが、例のために)Multipliesも実装しています。この場合、メソッドは静的でなくてはならず(MUST)、そのインスタンスをインスタンス化してインスタンスをインスタンス化して、それを使用するインスタンスにインスタンスを渡す必要があります。

インターフェイスロジックは、常に私の心の中にありました(教授が教えたように):スクエアペグ、丸穴。丸い穴に収まるようにしたい場合は、円形にする必要があります。あなたが存在しなければ、あなたは丸くなく、穴を通過することはできません。

関連する問題