Java のメソッドは、オンデマンドで実行できる再利用可能なコードにすぎません。
メソッドは関数と呼ばれることが多く、両方の単語が同じ意味で使用されることがわかります。
メソッドまたは関数の使用の重要性
ソフトウェア開発者は、問題をより小さな問題に分割し、それらを解決することで問題を解決し、全体として問題を解決します。このアイデアは、いわゆるモジュラー アーキテクチャにつながりました。このアプローチでは、開発者はコードを移動して実行できる部分に分割して、より大きな問題を解決します。
メソッドはアプリケーション全体のさまざまなインスタンスで使用できるため、利点があります。文から不要な空白をすべて削除するユーティリティ メソッドを作成するとします。アプリケーションのどこかに必要になるたびにロジックを記述するのは意味があるでしょうか?
それとも、メソッドを 1 回作成して、アプリケーション内の複数の場所で同じメソッドを異なる入力で使用するのが合理的でしょうか?後者の方が明らかに優れており、効率的です。
それだけでなく、Java のアクセス修飾子の助けを借りて、どのメソッドがアプリケーション全体で実際に共有可能で、どのメソッドが共有できないかを制御することもできます。また、コードをより読みやすく、整理し、構造化したものにするのにも役立ちます。

Javaのメソッドの種類
Java には、 ユーザー定義メソッド と 事前定義 メソッドの 2 種類のメソッドがあります。ユーザー定義メソッドは、名前が示すように、プログラマによって明示的に定義されます。ユーザー定義メソッドの例は次のとおりです。
public int sum(int a, int b) {
return a + b;
}
一方、事前定義メソッドまたは組み込みメソッドは、Java プログラミング言語の一部としてすでに存在しています。組み込みメソッドの例は次のとおりです。
String text = "Hello World";
text.toLowerCase();
ここで、
toLowerCase
、コード内のどこからでも呼び出すことができる組み込み Java メソッドです。

Java のメソッドの構造
Java のメソッドの理想的な構造を見てみましょう。
[access_modifier] [return_type] method_name(...parameters) {
// method body
}
メソッドのこれらのコンポーネントは順番に指定する必要があります。たとえば、戻り値の型の前にメソッドを定義することはできません。同様に。メソッドを構成するこれらの各コンポーネントの機能と、それらがどのように連携するかを理解しましょう。
#1. アクセス修飾子
Java では、アクセス修飾子は、メソッド、クラス、インターフェイス、変数などの可視性を定義するキーワードです。技術的には、Java には次の 5 つのアクセス修飾子があります。
- public : すべてのクラスにアクセス可能
- private : 所属するクラスのみがアクセス可能
- default : デフォルトのアクセス修飾子は、同じパッケージ内でのみメソッドにアクセスできる protected 修飾子に似ています。
- protected : サブクラスまたは特定のパッケージ内でアクセス可能
public int sum(a int, b int) {
return a + b;
}
ここで、
calc
メソッドには
public
というアクセス修飾子があるため、どこからでもアクセスできます。
#2. 戻り値の型
関数の戻り値の型は、関数が返すデータのデータ型を定義します。関数から何も返したくない場合は、戻り値の型に void を指定します。 void型を指定した場合、returnキーワードは使用できません。関数を定義するには、戻り値の型を指定する必要があります。
public void log(String text) {
System.out.println(text);
}
上記のメソッドは何も返しません。コンソールにテキストを出力しているだけです。したがって、戻り値の型は
void
。
#3. メソッド名
これはクラス内のメソッドを識別し、オブジェクトからメソッドを呼び出すために使用されます。
class Print {
void log(String text) {
System.out.println(text);
}
}
Print p = new Print();
p.log("hello world"); // outputs "hello world"
#4. パラメーター
定義されたパラメータに従ってメソッドに引数を渡すことができます。たとえば、メソッドに 2 つのパラメーターが定義されている場合、対応するデータ型を持つ 2 つの引数のみを渡すことができます。また、引数は定義された順序で渡す必要があります。
class Calc {
int sum(a int, b int) {
return a + b;
}
}
Calc cal = new Calc();
cal.sum(3, 7); // will return 10
#5. 体
メソッド本体には、特定の結果を返すために使用されるプログラミング ロジックが含まれています。メソッドが行うべき機能を実行します。これは中括弧で囲まれており、コードのブロックと呼ばれることがよくあります。
class Calc {
int sum(a int, b int) {
return a + b;
}
}
ここで、中括弧内の
return
ステートメントはメソッド
sum
の
body
です。

Java でのメソッドの呼び出し
Java でメソッドを呼び出すのは非常に簡単です。メソッドは、そのメソッドが存在するクラスのインスタンスからその名前で呼び出すことができます。
静的メソッドは、それが存在するクラスのオブジェクト インスタンスがなくても呼び出すことができます。非静的メソッドは、クラスのインスタンス、つまりオブジェクトから厳密に呼び出される必要があります。
静的メソッドの場合、呼び出しは次のようになります。
class Math {
public static int sum(int a, int b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
int add = Math.sum(5, 2);
System.out.println(add);
}
}
上記のコードでは、
Math
クラス内の
sum
メソッドは静的メソッドです。これが、
Math
クラスのオブジェクト (インスタンス) を作成する必要がなく、クラス自体からメソッドを呼び出すだけでよい理由です。
逆に、非静的メソッドの場合、呼び出しは次のようになります。
class Math {
public int sum(int a, int b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
int add = new Math().sum(5, 2);
System.out.println(add);
}
}
ここでは、
Math
クラスから新しいオブジェクトを作成し、メソッド
sum
を呼び出しています。この背後にある理由は、クラスがインスタンス化されるまで、非静的メソッドはインスタンス化されないためです。
これが Java でメソッドを呼び出す方法です。
最後の言葉
Java に限らず、どのプログラミング言語でも、メソッドはコードを整理し、複数の場所で再利用するための優れた方法です。メソッドは、モジュール式のコンポーネントベースのアーキテクチャの構成要素です。
Java に興味がある場合は、Java の例外処理について詳しく学習してください。
