Javaのインスタンスメソッドを徹底解説!初心者でも分かる基本的な使い方
生徒
「Javaのメソッドを呼び出す方法がよく分かりません。特にインスタンスメソッドってどう使うんですか?」
先生
「いい質問ですね!インスタンスメソッドは、オブジェクトを生成してから呼び出す方法が基本です。具体的なコードを使って説明していきますよ。」
1. インスタンスメソッドとは?
Javaのインスタンスメソッドは、クラスのインスタンスごとに存在するメソッドです。newキーワードを使ってインスタンスを生成した後、そのインスタンスを通じてメソッドを呼び出します。
以下の例を見てください:
public class Greeting {
public void sayHello() {
System.out.println("Hello, Java!");
}
}
public class Main {
public static void main(String[] args) {
Greeting greeting = new Greeting(); // インスタンス生成
greeting.sayHello(); // インスタンスメソッドの呼び出し
}
}
実行結果:
Hello, Java!
このコードでは、Greetingクラスに定義されたsayHelloメソッドを呼び出すために、まずインスタンスを生成しています。このように、インスタンスメソッドは、必ずオブジェクトを介して呼び出す必要があります。
2. インスタンスメソッドの呼び出し方法
インスタンスメソッドを呼び出すには、以下の手順を踏みます:
newキーワードでクラスのインスタンスを生成する。- 生成したインスタンスを使用して、
インスタンス名.メソッド名()の形式でメソッドを呼び出す。
次の例で確認してみましょう:
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator(); // インスタンス生成
int result = calc.add(5, 3); // インスタンスメソッドの呼び出し
System.out.println("Result: " + result);
}
}
実行結果:
Result: 8
この例では、Calculatorクラスのaddメソッドを呼び出すために、calcというインスタンスを生成しています。
3. メソッド呼び出しの注意点
インスタンスメソッドの呼び出しにおいて、以下の点に注意してください:
- クラス名では呼び出せない:クラス名を使うと
staticメソッドの呼び出しと解釈されます。 - カッコが必要:メソッド名の後ろには必ず
()を付けて呼び出します。 - 正しい型で呼び出す:呼び出し先のインスタンスが適切な型であることを確認してください。
次の例を見てみましょう:
public class Main {
public static void main(String[] args) {
Greeting greeting = new Greeting();
// Greeting.sayHello(); // コンパイルエラー: staticではないメソッドをクラス名で呼び出せない
greeting.sayHello(); // OK: インスタンスを使った呼び出し
}
}
このコードでは、クラス名を使った呼び出しがエラーになることが確認できます。
4. 試験対策:正しい呼び出し方法を理解する
Javaのインスタンスメソッドを正しく呼び出すためのポイントを以下にまとめます:
インスタンス名.メソッド名()の形式で呼び出す。- クラス名を使用しない(
staticメソッドとの混同に注意)。 - 正しい型のインスタンスを使用する。
次の例で復習しましょう:
public class Animal {
public void sound() {
System.out.println("Animal makes a sound");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.sound(); // 正しい呼び出し方
}
}
このコードでは、インスタンスメソッドsoundを正しい形式で呼び出しています。
5. インスタンスごとにデータが保持される仕組み
インスタンスメソッドの最大の特徴は、各インスタンスが持つ「フィールド(変数)」の値を利用できる点です。同じメソッドを呼び出しても、インスタンスごとに結果が変わることがあります。
プログラミング未経験の方でも分かりやすいよう、個別の「名前」を持つ人間を例に見てみましょう。
public class Person {
String name; // インスタンスごとに異なる名前を持つ
public void introduce() {
System.out.println("私の名前は" + name + "です。");
}
}
public class Main {
public static void main(String[] args) {
Person p1 = new Person();
p1.name = "田中";
Person p2 = new Person();
p2.name = "佐藤";
p1.introduce(); // p1のデータを使って実行
p2.introduce(); // p2のデータを使って実行
}
}
実行結果:
私の名前は田中です。
私の名前は佐藤です。
このように、インスタンスメソッドは「そのオブジェクト自身のデータ」にアクセスして処理を行うために使われます。
6. 引数を受け取るインスタンスメソッド
インスタンスメソッドには、外部からデータ(引数)を渡して処理させることも可能です。これにより、一つのメソッドで様々なパターンに対応できるようになります。
次の例では、メッセージを複数回繰り返して表示するメソッドを作成しています:
public class Printer {
public void repeatMessage(String message, int count) {
for (int i = 0; i < count; i++) {
System.out.println(message);
}
}
}
public class Main {
public static void main(String[] args) {
Printer myPrinter = new Printer();
myPrinter.repeatMessage("Java学習中!", 3); // メッセージと回数を渡す
}
}
実行結果:
Java学習中!
Java学習中!
Java学習中!
呼び出し側で指定した「Java学習中!」という文字列と「3」という数値が、インスタンスメソッド内で正しく処理されているのが分かります。
7. staticメソッドとの使い分けの基準
Javaには、インスタンスを作らずに呼び出せるstaticメソッドもありますが、どちらを使うべきか迷うことがあります。基本的な判断基準は「オブジェクトの状態(データ)を使うかどうか」です。
- インスタンスメソッド:そのクラスのフィールド(属性)を利用する場合に使用します。
- staticメソッド:計算処理のように、外部のデータだけで完結し、個別のオブジェクトの状態に依存しない場合に使用します。
実務では、ほとんどの処理が「オブジェクト指向」の考えに基づき、インスタンスメソッドとして定義されます。まずは、newしてドット.で呼び出すという基本の流れをしっかりマスターしましょう。
まとめ
Javaのインスタンスメソッドの基本的な使い方や注意点について学んできました。インスタンスメソッドは、インスタンスを生成してからインスタンス名.メソッド名()という形式で呼び出します。また、staticメソッドとの違いを理解することも重要です。クラス名を使った呼び出しがエラーになる点や、必ずカッコを付けることを忘れないようにしましょう。
以下のポイントを押さえることで、試験や実務でも迷うことなくインスタンスメソッドを使いこなせます:
- インスタンスを生成してから呼び出す。
- カッコが必要。
- 正しい型のインスタンスを使う。
- クラス名で呼び出そうとするとエラーになる。
最後に、以下のコードで全体を復習してみましょう:
public class Car {
public void startEngine() {
System.out.println("Engine started.");
}
public void stopEngine() {
System.out.println("Engine stopped.");
}
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car(); // インスタンス生成
myCar.startEngine(); // エンジン始動
myCar.stopEngine(); // エンジン停止
}
}
実行結果:
Engine started.
Engine stopped.
このコードでは、Carクラスのインスタンスを生成し、startEngineとstopEngineメソッドを正しい形式で呼び出しています。
生徒
「インスタンスメソッドの呼び出し方が分かってきました!インスタンスを生成してから使うのが基本ですね。」
先生
「そうです!正しい形式で呼び出すことが重要です。特に、staticメソッドとの違いをしっかり理解しておくと、プログラムを書くときに迷いませんよ。」
生徒
「staticメソッドとインスタンスメソッドの違いを意識しながら、コードを書く練習をしてみます!」
先生
「その調子です!練習を重ねることで、自然と使いこなせるようになりますよ。」