【Java】インスタンスメソッドとクラスメソッドの違いを解説

クラスをインスタンス化しないと使えないメソッドがインスタンスメソッドです。
逆にインスタンス化しなくても使えるのがクラスメソッドです。
文法的な違いは戻り値の前にstaticをつけるかつけないかの違いがあります。
クラスメソッドにはstaticをつけるので、staticメソッドとも呼ばれます。
実際のコードを見て確認してみます。

「独学だと何から勉強したら良いかわからない」という方にはDig Skillがおすすめです!
Dig Skillでは月1000円でオリジナルのカリキュラムを使ってWebアプリの開発方法を学ぶことができます!30日間の無料体験もあるので、公式サイトをチェックしてみてください!

実際のコードで確認する

以下のようなClassMethodクラスを作成します。
ClassMethodクラスはインスタンス変数とクラス変数をそれぞれ一つずつ持っています。
これらのフィールドも同じように、クラス変数はインスタンス化しなくてもアクセスすることができます。
またClassMethodクラスはクラスメソッドであるprint1()とインスタンスメソッドであるprint2()を持っています。

public class ClassMethod {
	String str1 = "This is not static field";

	static String str2 = "This is static field";

	static void print1() {
		System.out.println(str2);
	}

	void print2() {
		System.out.println(str1);
	}
}

下記の画像はEclipseにて作成したコードのスクショです。
クラスメソッドであるprint1()はClassMethodがインスタンス化されてない状態でも、利用できます。しかしインスタンスメソッドであるprint2()はインスタンス化されていないので赤い線がでています。
このままでは実行することはできません。

インスタンスメソッドを使うためにはクラスをインスタンス化しなければ使うことができません。
コードをかくと以下のような感じになります。

public class Main {

	public static void main(String[] args) {
		// staticのついたクラスメソッドはインスタンス化しなくてもクラス名.メソッド名で実行することが可能。
		ClassMethod.print1();

		// インスタンスメソッドはインスタンス化してからでないと実行することができない。
		ClassMethod cm = new ClassMethod();
		cm.print2();
	}

}

上記のコードを実行すると以下の通りになります。

This is static field
This is not static field

クラスメソッドとインスタンスメソッドの違いについて解説してみました。
結論はインスタンス化しなくても使えるのがクラスメソッド、インスタンス化しなければ使うことができないのがインスタンスメソッドとなります。

「独学だと何から勉強したら良いかわからない」という方にはDig Skillがおすすめです!
Dig Skillでは月1000円でオリジナルのカリキュラムを使ってWebアプリの開発方法を学ぶことができます!30日間の無料体験もあるので、公式サイトをチェックしてみてください!

コメント

タイトルとURLをコピーしました