KATOエンジニヤリング開発日誌

「アウトプット無きエンジニアにインプットもチャンスも無い」の精神で書いています

Javaのメソッドと局所変数について学ぶ

「Javaプログラミング技法」の第4回目の授業まとめになります。

※前回授業の内容はこちら

www.kato-eng.info

メソッド

フィールドと共にクラスの主要な要素のひとつで、「処理」のテンプレートである。

メソッドを呼び出す側から、メソッド側へ渡されるデータを引数と呼ぶ。

  • 仮引数
    • メソッドの定義内で値を受け取る変数
  • 実引数
    • メソッドを呼び出すときに渡す値
class Student {
    private int id;

    void setID(int id) { // メソッドの定義内で受け取る仮引数
        this.id = id;
    }

    int getID() {
        return this.id;  // メソッド側から呼び出し元へ渡す値は戻り値(返り値)と呼ぶ
    }
}

class StudentManager {
    public void static main(String[] args) {
        Student student = new Student();

        student.setID(3); // メソッドを呼び出す時に渡す実引数
        System.out.println(student.getID());
    }
}
  • メソッドもインスタンス毎に割り当てられる
    • クラス全体で共通のメソッドを持つこともできる
  • メソッドは呼び出されたときだけ動作する
  • 引数の変数を使って処理を書くと呼び出し時に渡された値に応じて異なる結果を得られる
  • メソッド名についてのルールは下記の通り
    • 大文字や小文字の扱いは変数と同じ
    • メソッド名は一般的に動詞で表し、名詞にはしない
    • 何かの値を設定するメソッドはメソッド名に「set」で始まるのが一般的
    • 何かの値を得るメソッドはメソッド名に「get」で始まるのが一般的

クラスフィールドと局所変数

メソッドの引数の変数名によっては意図しない動作をしてしまうことがある。

変数のスコープ

変数のスコープ(有効範囲)は宣言されたブロック内に限定される。このブロック内で宣言された変数を局所変数と呼ぶ。

class Student {
    private int id;

    void setID(int id1) {
        this.id = id1;
    }

    int getID() {
        return id1; // id1は異なるブロックで宣言されているので「getID」内では利用できない
    }
}

メソッドから渡される仮引数とクラスフィールドの変数を同じ名前にしたい場合にはフィールド側の変数に「this」をつける。

class Student {
    private int id; // フィールド変数「id」

    void setID(int id) { // 仮引数の変数「id」
        // 左辺のthis.id => フィールド変数の「id」
        // 右辺のid => setIDブロック内ではthisを付けない「id」は仮引数の「id」
        this.id = id;
    }

    int getID() {
        return this.id; // 呼び出し元にフィールド変数「id」の値を返す
    }
}

※次回の授業内容はこちら

www.kato-eng.info