インスタンスメソッドとクラスメソッドの定義
メソッドを宣言する場合、キーワード static によって変更されないメソッド タイプはインスタンス メソッド、キーワード static によって変更されるメソッド タイプはクラス メソッド (静的メソッドとも呼ばれます) です。
例えば:
classMain{inta;floatmax(floatb,floatc){//インスタンス メソッド...}staticfloatmax(floatd,floate){//クラス メソッド...}}
インスタンスメソッドとクラスメソッドの違い
1. オブジェクトはインスタンス メソッドを呼び出します。
クラスのバイトコード ファイルがメモリにロードされるとき、クラスのインスタンス メソッドにはエントリ アドレスが割り当てられません。クラスがオブジェクトを作成した後でのみ、クラスのインスタンス メソッドにエントリ アドレスが割り当てられます。インスタンス メソッドは、オブジェクト呼び出しの実行によって作成された任意のオブジェクトで使用できます。
知らせ:
最初のオブジェクトを作成すると、クラス内のインスタンス メソッドにエントリ アドレスが割り当てられますが、オブジェクトが再度作成されると、そのエントリ アドレスはすべてのオブジェクトで共有されなくなります。 . すべてのオブジェクトが存在しない場合、メソッドのエントリ アドレスはキャンセルされます。
インスタンスメソッドはインスタンス変数だけでなくクラス変数も操作できます。オブジェクトがインスタンス メソッドを呼び出す場合、メソッド内に表示されるインスタンス変数とクラス変数はオブジェクトに割り当てられた変数ですが、クラス変数は他のすべてのオブジェクトと共有されます。
2. クラス名を使用してクラス メソッドを呼び出します。
クラス内のクラス メソッドの場合、クラスがメモリにロードされると、対応するエントリ アドレスが割り当てられるため、クラス メソッドは、クラスによって作成された任意のオブジェクトから呼び出して実行できるだけでなく、メソッドを通じて直接呼び出すこともできます。クラス名。クラスメソッドのエントリアドレスはプログラムが終了するまでキャンセルされません。
知らせ:
インスタンス メソッドはクラス名によって呼び出すことはできず、オブジェクトによってのみ呼び出すことができます。また、クラスがオブジェクトを作成する前にインスタンス メンバー変数にメモリが割り当てられていないため、クラス メソッドはインスタンス変数を操作できません。
3. クラスメソッドの設計原則:
プログラムのニーズを満たすためにメソッドがクラス内のインスタンス変数を操作する必要がない場合は、そのようなメソッドを静的メソッドとして設計することを検討できます。
静的メソッドの場合、オブジェクトを作成せずにクラス名を指定して直接呼び出すことができます。オブジェクトを作成すると、クラス内のインスタンス変数にメモリ領域が割り当てられます。