- ベストアンサー
静的メソッドとインスタンスメソッドの違い
静的メソッドとインスタンスメソッドは違うと本に書いてあったのですが。 具体的にどのように違うのか教えていただければ幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず、クラスとインスタンスの違いについて説明します(分かっていれば飛ばして下さい)が、たとえば、「ネコ」というのは、ネコという種類をあらわすもので、クラスに対応します。それに対し、ネコには家の「たま」もいれば、隣の家の「みけ」もいますね。これはネコというクラスに対するインスタンスになるわけです。 さて、静的メソッドというのは、言語によってはクラスメソッドと呼ばれているもので、クラスに対して呼び出すメソッドのことです。いっぽう、インスタンスメソッドは、インスタンスに対して呼び出すものです。したがって、インスタンスメソッドは、クラスのインスタンスであるオブジェクトが存在しなければ呼び出すことができませんが、静的メソッドはインスタンスが存在しなくても、クラスに対して呼び出すことができます。 たとえば、「ネコ」というクラスには、「足の数を求める」という静的メソッドが存在し、「ネコ」のインスタンスメソッドには「毛の色を求める」というメソッドがあったとします。「ネコ」というクラスに対しては、足の数を求めることができますが、毛の色を求めることはできませんね(毛の色はそれぞれのネコで異なるから)。
その他の回答 (1)
- kuro_73
- ベストアンサー率28% (33/117)
わかりやすい説明をNo.1でしていただいたので、 私は具体例を示します。 public class AAA{ //インスタンス変数 String X = null; //初期化____コンストラクタってこれでいいんでしたっけ(汗) AAA(String x_){ X=x_; } //静的メソッド public static String getName(){ return "AAA"; } //インスタンスメソッド public String getX{ return x_; } } public class Test{ public static void main(String args[]){ //静的メソッドはそのまま使える System.out.println("静的メソッドを実行..."+AAA.getName()); //AAAのインスタンスを作成 AAA obj_a = new AAA("obj_aから与えた文字列"); System.out.println("インスタンスメソッドを実行..."+obj_a.getX()) } } これをTest.javaに保存してコンパイルして実行すると 実行結果は次のようになります >java Test 静的メソッドを実行...AAA インスタンスメソッドを実行...obj_aから与えた文字列
お礼
kuro_73様ありがとうございました。 具体例までしていただけるとは思ってなかったのでびっくりしました。 すこし具体例についてまだまだ学習不足な点がありまてすぐに理解することができませんでしたが。 腰を据えてじっくり取り組んでいこうと思ってます。 ありがとうございました。
お礼
mamoony様ありがとうございました。 的確な例えで説明していただき、昨日よりは理解できたように思えます。 まだまだJAVAは始めたばかりでわからない事は多いですががんばって学ぼうとおもっています。 ありがとうございました。