Javaで出てきたエラーの解決策。
クラスメソッドとインスタンスメソッド
クラスに紐づけられたメソッドのことをクラスメソッド といいます。
インスタンスメソッドは、インスタンスに紐づけられたメソッドのことをいいます。インスタンスごとで異なる処理をおこなう時に使用します。
簡単にはクラスメソッドは、 static が付いたメソッドです。
インスタンスメソッドは、staticが付いていないメソッドです。
1 2 3 4 5 6 7 8 9 |
class PPP { public static aaa() { //クラスメソッド } public bbb() { //インスタンスメソッド } } |
クラスメソッドは、
クラス名.メソッド名 で呼び出します。
インスタンスメソッドは、インスタンスをnewで作成してから呼び出します。
1 2 3 4 5 6 7 |
class Main { public static void main(String[] args) { PPP.aaa(); Person ppp = new ppp; ppp.bbb(); } } |
Cannot make a static reference to the non-static method とは
Javaのmainメソッドは、static が付いているのでクラスメソッドです。
クラスメソッドからは他のクラスメソッドか、インスタンスを指定したインスタンスメソッド呼出ししかできません。
funcというstaticが付いていないインスタンスメソッドがあった場合とします。
インスタンスメソッドを呼び出したいのであれば、
test mytest = new test();
mytest.func(n);
のようにしてインスタンスを指定する必要があります。
あるいは、funcメソッドにstaticを書き加えてクラスメソッドにする必要があります。
以下に質問の回答がありました。
Since the main method is static and the fxn() method is not, you can't call the method without first creating a Two object. So either you change the method to:
・https://stackoverflow.com/questions/21839182/cannot-make-a-static-reference-to-a-non-static-method
コメント