\r\n\r\n
静的メソッドと非静的メソッド
メソッドは、特定のタスクを実行する一連のステートメントです。メソッドは入力を受け取り、出力を生成することができます。オブジェクト指向プログラミング言語には、静的メソッドと非静的メソッドという2種類のメソッドが存在します。静的メソッドは、クラスに関連するメソッドです。オブジェクトに関連するメソッドは、非静的(インスタンス)メソッドと呼ばれます。オブジェクト指向言語では、オブジェクトに格納されたデータを操作する仕組みとして、メソッドが使われる。
スタティックメソッドとは何ですか?
オブジェクト指向プログラミングにおいて、静的メソッドはクラスと関連付けられたメソッドです。そのため、静的メソッドには、クラスの特定のインスタンスに対して操作する機能はありません。静的メソッドを含むクラスのオブジェクトを使用せずに、静的メソッドを呼び出すことが可能です。以下は、Javaでスタティックメソッドを定義する例です。Javaで静的メソッドを定義する場合は、必ず静的メソッドを使用します。
所属するクラス名を使って、上で定義したスタティックメソッドを次のように呼び出すことができます。
MyStaticMethodCompany()です。
注意点としては、静的メソッドは静的メンバにしかアクセスできないことです。
非静的メソッドとは何ですか?
非静的メソッドまたはインスタンスメソッドは、クラス内のオブジェクトに関連付けられたメソッドです。したがって、非静的メソッドは、そのメソッドが定義されているクラスのオブジェクトを使用して呼び出されます。非静的メソッドは、クラスの静的メンバだけでなく、非静的メンバにもアクセスすることができます。多くのオブジェクト指向言語(C++、C、javaなど)では、非静的メソッドが呼び出されるとき、メソッドを呼び出すオブジェクトが暗黙のパラメータとして渡されます(「this」参照と呼ばれる)。したがって、メソッドの内部では、このキーワードを使用して、メソッドを呼び出したオブジェクトを参照することができます。以下は、Javaでインスタンスメソッドを定義する例です。
上で定義したインスタンスメソッドは、それが属するクラスのオブジェクトを使って、次のようにして呼び出すことができます。
MyClass objMyClass = new MyClass().
objMyClass.MyInstanceMethod();
静的メソッドと非静的メソッドの違いは何ですか?