ホームページ >Java >&#&チュートリアル >Javaの静的メソッドとインスタンスメソッドの違いを詳しく解説
静的メソッドとインスタンス メソッドの違いは主に 2 つの側面に反映されます:
静的メソッドを外部から呼び出す場合、「クラス名.メソッド名」メソッドまたは「オブジェクト名.メソッド名」メソッドを使用できます。インスタンスメソッドには後者のメソッドしかありません。つまり、静的メソッドの呼び出しにはオブジェクトを作成する必要はありません。
このクラスのメンバーにアクセスする場合、静的メソッドは静的メンバー (つまり、静的メンバー変数と静的メソッド) にのみアクセスできますが、インスタンス メンバー変数とインスタンス メソッドにはアクセスできません。インスタンス メソッドにはこの制限はありません。
次の例は、この違いを示しています。
1. 静的メソッドの呼び出し例
//-----------hasStaticMethod.java----------------- public class hasStaticMethod{ //定义一个静态方法 public static void callMe(){ System.out.println("This is a static method."); } }
次のプログラムは、静的メソッドを呼び出すために 2 つの形式を使用します。
//-----------invokeStaticMethod.java----------------- public class invokeStaticMethod{ public static void main(String args[]){ hasStaticMethod.callMe(); //不创建对象,直接调用静态方法 hasStaticMethod oa = new hasStaticMethod(); //创建一个对象 oa.callMe(); //利用对象来调用静态方法 } }
プログラムは静的メソッドを 2 回呼び出すことができます。プログラムの出力は次のとおりです。
これは、いくつかの一般的なメソッドを呼び出す際のプログラマの手間を軽減し、プログラマが使用できるようにします。 C 言語の関数を使用する伝統的な方法でのメソッド。典型的な例は、以前のプログラムで乱数を取得するために「Math.ramdon()」を使用したものです。
もう 1 つの典型的な代表例は、配列処理ツール Arrays です
2. 静的メソッドによるメンバー変数へのアクセスの例
//-----------accessMember.java----------------- 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 は静的メソッドでは使用できません。
main() メソッドは、一般的な静的メソッドの規則にも従うため、オブジェクトを作成する前にシステムによって呼び出すことができます。
以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。