2017-11-07 27 views
0

オブジェクトを必要とする通常のメソッドを使用するか、オブジェクトのデータメンバの値をインクリメントする静的関数メソッドを使用する必要があります。そのような機能の論理と目的ではなく、静的なもののメンバ関数を使用し、単一のオブジェクトに対して本質的に結合しているjavaの関数/メソッドでオブジェクト呼び出しや静的呼び出しを使用するには?

public void incSize() { 
    this.size++; 
} 

又はこのようなもののため

public static void incSize(Number num1) { 
    num1.size++; 
} 

答えて

0

として、など。つまり、オブジェクトに対して実行できるすべての操作は、操作を実行するオブジェクトによって論理的にグループ化されます。これは使いやすいものです。私の意見で

、および他の多くの可能性が高いの意見、それはで何が起こっているかを確認するためにはるかに簡単です:

foo.incSize(); 

比べるへ:

Foo.incSize(foo); 

静的な機能が優れていますあるクラスに関連する計算を記述するためのものであるが、必ずしもそのクラスのオブジェクトを有することに依存するものではない。たとえば、Integer.parseIntは静的です。これは、整数への解析機能が整数クラスに関連するためですが、そのクラスのオブジェクトを持たない場合でも使用できます。ここでも、比較:

int x = Integer.parseInt("0"); 

へ:

Integer x; 
x.parseInt("0"); 
+0

はそれだけでincSize(FOO)ではないでしょうか?それは静的メソッドなので、オブジェクトによって呼び出すことはできませんが、パラメータはオブジェクトにすることができます!それが私を混乱させているのです!どちらがいいですか? –

+0

静的関数の場合は、引き続きどのクラスから来るのかを指定する必要があります。この場合は 'Foo'です。 'static 'はオブジェクトに対して*呼び出すことができないことを意味しますが、オブジェクトと共に*呼び出すことができることに注意してください。どちらが「良い」ですか?この場合、上記の理由により、通常のメンバ関数です。 – hnefatl

+0

非常に参考にしていただきありがとうございます。D –

関連する問題