Developer

【はじめてのJava】メソッドの使い方【オブジェクトとクラス編】
2021.05.30
Lv1

【はじめてのJava】メソッドの使い方【オブジェクトとクラス編】

はじめてのJava

このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。


オブジェクトとクラス編

オブジェクトとクラス編では、Javaを扱う上で非常によく出てくる「オブジェクト」や「クラス」について扱っていきます。

前回は「メソッドの作り方」について扱いました。

今回は「メソッドの使い方」について扱っていきます。


目次


メソッドを利用する

メソッドを記述することを「 メソッドを定義する 」「 メソッドを実装する 」と言います。

同様に、メソッドを使うことを「 メソッドを呼び出す 」と言います。

今回は、メソッドの使い方について詳しく見ていきましょう。


メソッドを使う

では、メソッドを使ってみましょう。

前回作成したaccellメソッドが定義されたCarクラスは次のようになっています。

class Car{
  double speed;
  String color;

  void accell(){
    speed += 10;
  }
}

図にすると以下のような感じです。

このaccellメソッドはインスタンスメソッドです。

インスタンスメソッドは、インスタンス変数同様に、インスタンスを作成後利用します。

インスタンスメソッドの利用手順は以下の通りです。

  1. インスタンス化を行う
  2. メソッドを呼び出す

では実際に、MyCarDriveクラスのmainメソッド内で、今回作成したCarクラスのaccellメソッドを利用してみましょう。

まずはMyCarDriveクラスを作成し、中身がないmainメソッドを作成します。

public class MyCarDrive{
  public static void main(String[] args){
  }
}

ここから書き足していき、accellメソッドを使ってみます。

インスタンス化を行う

まずは、Carクラスのインスタンス化を行います。

Carクラスのインスタンス化の手順は以下の通りです。

Car myCar = new Car();

これをMyCarDriveに反映すると以下の通りです。

public class MyCarDrive{
  public static void main(String[] args){
    Car myCar = new Car(); //Carクラスをインスタンス化している
  }
}

これでインスタンス化は完了ですが、比較のためにmyCarのspeedを0.0に設定し表示を行ってみます。

public class MyCarDrive{
  public static void main(String[] args){
    Car myCar = new Car(); //Carクラスをインスタンス化している
    myCar.speed = 0.0; //myCarのspeedを0.0にしている
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する
  }
}

これでmyCarのspeedが0.0であることが確認できます。

メソッドを呼び出す

インスタンス化ができたらメソッドを呼び出します。

メソッドの呼び出し方は以下の通りです。※引数については後で扱います。今は「引数というものも使うんだ」という程度の認識で十分です。

インスタンス名.メソッド名(引数);

今回の場合、インスタンス名は「myCar」、呼び出したいメソッドは「accellメソッド」、引数は「なし」なので、以下のようになります。

myCar.accell();

これを先ほどのMyCarDriveに追記すると以下のようになります。

public class MyCarDrive{
  public static void main(String[] args){
    Car myCar = new Car(); //Carクラスをインスタンス化している
    myCar.speed = 0.0; //myCarのspeedを0.0にしている
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する

    myCar.accell(); //myCarのaccellメソッドを呼び出している
  }
}

これでメソッドの呼び出しができました。

ただし、このままでは画面表示などが行われないため、本当にaccellメソッドが動いたのかよくわかりません。

そこで、accellメソッドの呼び出し後に、もう一度myCarのspeedを表示する部分を入れて、accellによってspeedが変化しているのかどうか、確かめてみましょう。

public class MyCarDrive{
  public static void main(String[] args){
    Car myCar = new Car(); //Carクラスをインスタンス化している
    myCar.speed = 0.0; //myCarのspeedを0.0にしている
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する

    myCar.accell(); //myCarのaccellメソッドを呼び出している
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する
  }
}

動かしてみると、確かにaccellを呼び出したことによってspeedが変化していることが確認できます。

メソッドを繰り返し呼び出す

メソッドの概要を説明した記事でメソッドの利点の一つとして「同じ処理を何度も実行しやすくなる」と紹介しました。

例えば、今回で言えば、一度作ったアクセルは以下のように繰り返し呼び出すことができます。

public class MyCarDrive{
  public static void main(String[] args){
    Car myCar = new Car(); //Carクラスをインスタンス化している
    myCar.speed = 0.0; //myCarのspeedを0.0にしている
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する

    myCar.accell(); //myCarのaccellメソッドを呼び出している
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する

    myCar.accell(); //myCarのaccellメソッドを呼び出している
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する

    myCar.accell(); //myCarのaccellメソッドを呼び出している
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する
  }
}

accellメソッドのように、処理内容が少ないメソッドだと余り大きな利点に見えませんが、処理内容が多いメソッドの場合、それらを都度記述するよりも、このようにメソッドとして呼び出す形になっている方がソースコードの読みやすさは格段に上がります。


ソースコード

今回の説明で利用したソースコードをまとめると以下の通りです。

Carクラス

class Car{
  double speed;
  String color;

  void accell(){
    speed += 10;
  }
}

MyCarDriveクラス

public class MyCarDrive{
  public static void main(String[] args){
    Car myCar = new Car(); //Carクラスをインスタンス化している
    myCar.speed = 0.0; //myCarのspeedを0.0にしている
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する

    myCar.accell(); //myCarのaccellメソッドを呼び出している
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する
  }
}

まとめ

メソッドを使うことを「メソッドを呼び出す」という。
インスタンスメソッドを呼び出すためにはインスタンス化が必要。(staticメソッドについては別途扱う予定)
一度作ったメソッドは何度でも呼び出すことが可能。

次回

次回は引数や戻り値について詳しく触れていきます。


はじめてのJavaシリーズの目次はこちら
オブジェクトとクラス編はこちら


java 11 の練習問題一覧はこちら
はじめてのJavaシリーズの練習問題一覧はこちら