静的メソッドとインスタンス メソッドの違いは、主に 2 つの側面に反映されます。
静的メソッドを外部から呼び出す場合は、「クラス」を使用できます。 name".メソッド名"メソッドの他に、"オブジェクト名.メソッド名"メソッドも使用できます。インスタンスメソッドには後者のメソッドしかありません。つまり、静的メソッドを呼び出すにはオブジェクトを作成する必要はありません。
静的メソッドがこのクラスのメンバーにアクセスする場合、静的メンバー (つまり、静的メンバー変数と静的メソッド) へのアクセスのみが許可されますが、インスタンス メンバーへのアクセスは許可されません。変数とインスタンス メソッド。;インスタンス メソッドにはこの制限はありません。
public class hasStaticMethod{ //定义一个静态方法 public static void callMe(){ System.out.println("This is a static method."); } }次のプログラムでは、2 つの形式を使用して静的メソッドを呼び出します。
public class invokeStaticMethod{ public static void main(String args[]){ hasStaticMethod.callMe(); //不创建对象,直接调用静态方法 hasStaticMethod oa = new hasStaticMethod(); //创建一个对象 oa.callMe(); //利用对象来调用静态方法 } }プログラムでは静的メソッドを 2 回呼び出すことができます。プログラムの出力は次のとおりです:
This is a static method.This is a static method.オブジェクトを作成せずに静的メソッドを呼び出すことができるのは Java の仕様です。これにより、いくつかの一般的なメソッドを使用する手間が省かれ、プログラマは C 言語の関数を使用する従来の方法でメソッドを使用できるようになります。 2. メンバー変数にアクセスする静的メソッドの例
class accessMember{ private static int sa; //定义一个静态成员变量 private int ia; //定义一个实例成员变量 //下面定义一个静态方法 static void statMethod(){ int i = 0; //正确,可以有自己的局部变量sa = 10; //正确,静态方法可以使用静态变量 otherStat(); //正确,可以调用静态方法 ia = 20; //错误,不能使用实例变量 insMethod(); //错误,不能调用实例方法 } static void otherStat(){} //下面定义一个实例方法 void insMethod(){ int i = 0; //正确,可以有自己的局部变量 sa = 15; //正确,可以使用静态变量 ia = 30; //正确,可以使用实例变量 statMethod(); //正确,可以调用静态方法 } }この例は、実際には 1 つの文に要約できます: 静的メソッドは静的メンバーにのみアクセスでき、インスタンス メソッドは静的メンバーとインスタンス メンバーにアクセスできます。静的メソッドがインスタンスのメンバー変数にアクセスできない理由は、インスタンスのメンバー変数は特定のオブジェクトに属しており、静的メソッドの実行時にそのオブジェクトが存在するとは限らないためです。 同様に、インスタンス メソッドはインスタンス メンバー変数にアクセスできるため、静的メソッドがインスタンス メソッドの呼び出しを許可されている場合、インスタンス メンバー変数の使用が間接的に許可されるため、インスタンス メソッドを呼び出すことはできません。同じ理由で、キーワード this は静的メソッドでは使用できません。
以上がJavaの静的メソッドとインスタンスメソッドの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。