【java入門】メソッドと関数とは?書き方などをわかりやすく解説!

Javaメソッド関数
目次

Javaのメソッドと関数について

プログラミングにおいて、Javaではメソッドと関数が重要な役割を果たします。
この記事では、メソッドと関数の基本的な定義から使い方、実装方法、そして応用までを詳しく説明します。


Javaのメソッドと関数とは

メソッドと関数は、プログラム内で特定の処理を実行するための手段です。メソッドは主にオブジェクト指向プログラミングで使われ、クラス内に定義されます。一方、関数は手続き型プログラミングで使用され、独立したブロック内に定義されます。

Javaのメソッドと関数の違い

メソッドはクラスに属し、そのクラスのオブジェクトによって呼び出されます。一方、関数は単独で存在し、他の関数やメソッドから呼び出すことができます。また、メソッドはオブジェクトの状態を変更することができますが、関数は状態を持ちません。

  • クラス: オブジェクトの設計図のようなものです。
  • オブジェクト: クラスの実体であり、データとそのデータに対する操作が組み合わさったものです。

Javaのメソッドと関数の使い方の基本

メソッドはオブジェクト指向プログラミングにおいて、クラス内に振る舞いを定義するために使用されます。一方、関数は手続き型プログラミングにおいて、特定の処理を再利用可能なブロックとして定義するために使用されます。

  • オブジェクト指向プログラミング: データや操作をオブジェクトとして扱い、それらを組み合わせてプログラムを構築する手法です。
  • 手続き型プログラミング: プログラムを手続き(手順)の集合として記述する手法です。

Javaの メソッドの定義方法

Javaでメソッドを定義するには、次のようにします。

public class MyClass {
    // メソッドの定義
    public void myMethod() {
        // メソッドの処理
        System.out.println("This is my method.");
    }
}
新人:グラミちゃん

これはクラス内でのメソッドの定義例だね。

エンジニア:プロくん

そうだね。publicキーワードは他のクラスからアクセスできることを意味しているよ。


Javaのメソッドの実装方法(書き方)

メソッドの実装は、そのメソッド内で実際の処理を記述することです。

public class MyClass {
    // メソッドの定義
    public void myMethod() {
        // メソッドの処理
        System.out.println("This is my method.");
    }
}
新人:グラミちゃん

メソッドの中身は実際の処理が入るよね。

エンジニア:プロくん

そうだね。この例では、単純に文字列を出力しているみたいだね。

詳しく勉強する

Javaでは、メソッドはクラス内に定義され、そのクラスが持つ振る舞いを表します。メソッドの定義には次のような要素が含まれます:

  1. アクセス修飾子 (Access Modifier): メソッドがどの範囲からアクセス可能かを制御します。主なアクセス修飾子としては、public, private, protected, default があります。それぞれの意味は以下の通りです。
    • public: どこからでもアクセス可能です。
    • private: 同じクラス内からのみアクセス可能です。
    • protected: 同じパッケージ内か、そのサブクラスからのみアクセス可能です。
    • default (修飾子なし): 同じパッケージ内からのみアクセス可能です。
  2. 戻り値の型 (Return Type): メソッドが何を返すかを示します。void は何も返さないことを表します。
  3. メソッド名 (Method Name): メソッドの名前です。他のプログラムからこのメソッドを呼び出すときに使用します。
  4. パラメータリスト (Parameter List): メソッドが受け取る入力値の型と名前のリストです。パラメータがない場合、空のカッコ () を使います。
  5. メソッド本体 (Method Body): メソッドが実際に行う処理を記述します。中括弧 {} の間に処理の内容を書きます。

例を挙げてみましょう。

public class MyClass {
    // アクセス修飾子: public
    // 戻り値の型: void (何も返さない)
    // メソッド名: myMethod
    // パラメータリスト: なし
    // メソッド本体: 画面に"Hello, world!"を出力
    public void myMethod() {
        System.out.println("Hello, world!");
    }
}

この例では、MyClass クラス内に myMethod というメソッドが定義されています。このメソッドは public であり、戻り値の型は void です(つまり、何も返しません)。また、パラメータは受け取らず、メソッド本体では “Hello, world!” を画面に出力しています。


Javaのメソッドの呼び出し方

定義したメソッドは、他の部分から呼び出すことができます。

public class Main {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        // メソッドの呼び出し
        obj.myMethod();
    }
}
新人:グラミちゃん

ここでは、myMethod()を呼び出しているね。

エンジニア:プロくん

そうだね。objはMyClassのインスタンスだから、そのメソッドを呼び出せるよ。

詳しく勉強する

メソッドを呼び出すには、そのメソッドが属するクラスのインスタンスを作成し、そのインスタンスを使用してメソッドを呼び出します。または、静的メソッドの場合は、クラス名を使用して直接呼び出すことができます。

例を挙げてみましょう。

public class MyClass {
    // メソッドの定義
    public void myMethod() {
        System.out.println("This is my method.");
    }

    public static void main(String[] args) {
        // MyClassクラスのインスタンスを生成
        MyClass obj = new MyClass();

        // インスタンスを使ってメソッドを呼び出す
        obj.myMethod();
    }
}

この例では、MyClass クラス内に myMethod というメソッドが定義されています。main メソッド内で MyClass のインスタンス obj を生成し、そのインスタンスを使って myMethod を呼び出しています。メソッドが静的メソッドである場合、クラス名を使って直接呼び出すことができます。

public class MyClass {
    // 静的メソッドの定義
    public static void myStaticMethod() {
        System.out.println("This is a static method.");
    }

    public static void main(String[] args) {
        // クラス名を使って静的メソッドを呼び出す
        MyClass.myStaticMethod();
    }
}

この例では、MyClass クラス内に myStaticMethod という静的メソッドが定義されています。main メソッド内で、クラス名 MyClass を使って直接 myStaticMethod を呼び出しています。


Javaの関数の定義方法

関数を定義するには、次のようにします。

public class MyFunctions {
    // 関数の定義
    public static void myFunction() {
        // 関数の処理
        System.out.println("This is my function.");
    }
}
新人:グラミちゃん

これは単純な関数の定義例だね。

エンジニア:プロくん

そうだね。staticキーワードはこの関数がクラス自体に属することを示しているよ。

詳しく勉強する

Javaでは、関数という概念はクラスの外で使われることはありません。代わりに、メソッドという用語が使用されます。メソッドは主にクラス内で定義され、そのクラスが持つ振る舞いを表します。

したがって、関数を定義する代わりに、Javaではクラス内にメソッドを定義します。メソッドの定義方法については、前述の「メソッドの定義方法」で説明しました。

ただし、もし関数がクラスに属さない独立したブロックである必要がある場合は、Javaでは関数ではなく静的メソッドを使用することが一般的です。その場合、静的メソッドはクラスに属しますが、他のクラスから直接呼び出すことができます。

以下に、関数の代わりに静的メソッドを使用して関数を模倣する例を示します。

public class MyFunctions {
    // 静的メソッドの定義
    public static void myFunction() {
        System.out.println("This is my function.");
    }

    public static void main(String[] args) {
        // 静的メソッドを呼び出す
        myFunction();
    }
}

この例では、MyFunctions クラス内に myFunction という静的メソッドが定義されています。main メソッド内で、クラス名 MyFunctions を使って直接 myFunction を呼び出しています。


Javaの関数の実装方法

関数の実装は、その関数内で処理を記述することです。

public class MyFunctions {
    // 関数の定義
    public static void myFunction() {
        // 関数の処理
        System.out.println("This is my function.");
    }
}
新人:グラミちゃん

関数の中身はメソッドと同じように処理が入るね。

エンジニア:プロくん

そうだね。この例では、単純に文字列を出力しているようだね。

詳しく勉強する

Javaでは、関数の実装はメソッドとして行われます。メソッドはクラス内に定義され、そのクラスが持つ振る舞いを表します。

メソッドの実装方法については、以下の手順に従います。

  1. メソッドの宣言: メソッドの名前、アクセス修飾子、戻り値の型、パラメータリストを含むメソッドの宣言を行います。
  2. メソッドの本体の定義: メソッドの宣言の後に、メソッドの本体を中括弧 {} 内に定義します。メソッドの本体には、メソッドが実際に行う処理が含まれます。

例を挙げてみましょう。

public class MyFunctions {
    // メソッドの宣言
    public static void myMethod() {
        // メソッドの本体の定義
        System.out.println("This is my method.");
    }

    public static void main(String[] args) {
        // メソッドの呼び出し
        myMethod();
    }
}

この例では、MyFunctions クラス内に myMethod というメソッドが定義されています。myMethod メソッドは何も返さず(void)、パラメータも受け取りません。そのため、メソッドの宣言には public static void myMethod() という形式が使われています。メソッドの本体内では、”This is my method.” という文が画面に出力される処理が実行されます。


Javaの関数の呼び出し方

定義した関数は、他の部分から呼び出すことができます。

public class Main {
    public static void main(String[] args) {
        // 関数の呼び出し
        MyFunctions.myFunction();
    }
}
新人:グラミちゃん

ここでは、myFunction()を呼び出しているね。

エンジニア:プロくん

そうだね。staticメソッドなので、クラス名を使って呼び出せるよ。

詳しく勉強する

関数を呼び出すには、その関数が属するクラスのインスタンスを作成し、そのインスタンスを使用して関数を呼び出すか、または静的メソッドの場合はクラス名を使用して直接呼び出す方法があります。

インスタンスを作成して呼び出す場合: 関数が非静的メソッドの場合、まずその関数を含むクラスのインスタンスを作成する必要があります。その後、そのインスタンスを使って関数を呼び出します。

public class MyClass {
    public void myMethod() {
        System.out.println("This is my method.");
    }

    public static void main(String[] args) {
        MyClass obj = new MyClass(); // インスタンスを作成
        obj.myMethod(); // インスタンスを使って関数を呼び出す
    }
}

静的メソッドを直接呼び出す場合: 関数が静的メソッドの場合、クラス名を使って直接呼び出すことができます。

public class MyClass {
    public static void myStaticMethod() {
        System.out.println("This is a static method.");
    }

    public static void main(String[] args) {
        MyClass.myStaticMethod(); // クラス名を使って関数を呼び出す
    }
}

上記の例では、それぞれのクラス内に定義されたメソッドを呼び出しています。非静的メソッドの場合はインスタンスを作成し、それを使って呼び出し、静的メソッドの場合はクラス名を直接使用して呼び出します。


Javaのメソッドの使用例

メソッドの使用例として、以下のようにクラス内に複数のメソッドを定義し、それらを呼び出すことが挙げられます。

public class Calculator {
    // 加算メソッド
    public static int add(int a, int b) {
        return a + b;
    }
    
    // 減算メソッド
    public static int subtract(int a, int b) {
        return a - b;
    }
    
    public static void main(String[] args) {
        System.out.println("Addition: " + add(5, 3));
        System.out.println("Subtraction: " + subtract(5, 3));
    }
}
新人:グラミちゃん

この例では、Calculatorクラス内にadd()とsubtract()の2つのメソッドがあるね。

エンジニア:プロくん

そうだね。これらのメソッドを使って、加算と減算ができるよ。


Javaの関数の使用例

関数の使用例として、以下のように独立した関数を定義し、それを呼び出すことが挙げられます。

public class MyMath {
    // 関数の定義
    public static int multiply(int a, int b) {
        return a * b;
    }
    
    public static void main(String[] args) {
        System.out.println("Multiplication: " + multiply(5, 3));
    }
}
新人:グラミちゃん

この例では、MyMathクラス内にmultiply()関数があるね。

エンジニア:プロくん

そうだね。この関数を使って、数値の掛け算ができるよ。


Javaのメソッドと関数の再利用性の向上

メソッドと関数は、再利用性を高めるための重要な概念です。適切に設計されたメソッドや関数は、同じ処理を何度も書く必要がなくなります。

新人:グラミちゃん

このメソッドは一度書けば、何度でも使えるから便利だね。

エンジニア:プロくん

そうだね。コードを再利用することで、効率的にプログラムを書くことができるよ。


Javaのメソッドと関数のパラメータと返り値

メソッドと関数は、パラメータを受け取って処理を行い、結果を返すことができます。これにより、柔軟性が向上し、異なる値や状況に対応できます。

新人:グラミちゃん

メソッドのパラメータは、メソッドに必要な情報を渡すのに使うんだね。

エンジニア:プロくん

そうだね。そして、返り値はメソッドが処理した結果を返すのに使われるよ。


Javaのメソッドと関数のネスト

メソッドや関数は、他のメソッドや関数内で定義されることがあります。これにより、処理を階層化してより複雑な動作を実現できます。

新人:グラミちゃん

メソッドの中で別のメソッドを呼び出すこともできるんだね。

エンジニア:プロくん

そうだね。これにより、処理をより細かく分割して管理できるよ。


まとめ

この記事では、Javaにおけるメソッドと関数の基本的な定義から使い方、実装方法、そして応用までを詳しく説明しました。メソッドと関数は、効率的なプログラミングや再利用性の向上に重要な役割を果たします。そのため、適切に活用することで、より効率的なコードを記述することができます。

目次