コース一覧
    Java入門:クラスとオブジェクト
    Person クラスを作る

    Java入門:クラスとオブジェクト

    クラスとオブジェクトの設計を学び、状態と振る舞いを持つJavaプログラムを組み立てられるようにします。

    1
    クラスとオブジェクト
    01. クラスを定義する5分
    02. クラスにフィールドを持たせる12分
    03. クラスにメソッドを定義する5分
    04. インスタンスを作る5分
    05. コンストラクタ5分
    06. this キーワード5分
    07. カプセル化 (private と getter)12分
    08. Person クラスを作る5分
    09. Product クラスで税込価格15分
    10. 銀行口座クラス15分
    11. toString のオーバーライド5分
    12. クラスとオブジェクト クイズ5分
    13. Java 入門 最終クイズ5分

    Person クラスを作る

    名前と年齢が、いつまでも別々に旅をする

    いま、人 1 人ぶんの情報は String name と int age という 2 本の変数です。この 2 本は、コードの上では何のつながりもありません。関係を知っているのは書いた人の頭の中だけです。

    Java

    String name = "太郎";
    int age = 25;
    
    send(name, age);
    save(age, name);   // 順番を取り違えた

    3 人ぶんになれば変数は 6 本、そこに住所が加われば 9 本です。メソッドに渡すたびに順番と個数を合わせる必要があり、型が違えばコンパイラが止めてくれますが、String が 2 本並んだ瞬間に何の守りもなくなります。

    関係のある値を 1 つの型にまとめる

    これを片付ける道具が class です。まとめてしまえば、持ち運ぶのは変数 1 本になります。クラスに入れるものは次の 3 つです。

    Java

    class TodoItem {
        String title;
        boolean done;
    
        TodoItem(String title, boolean done) {
            this.title = title;
            this.done = done;
        }
    
        String label() {
            return done ? "[済] " + title : "[  ] " + title;
        }
    }

    上から順に、持っているデータ (フィールド)、生まれるときの受け取り口 (コンストラクタ)、できること (メソッド) です。この 3 つが揃うと、title と done は二度と別々に旅をしません。使う側はこう書きます。

    Java

    TodoItem t = new TodoItem("牛乳を買う", false);
    System.out.println(t.label());   // [  ] 牛乳を買う

    label() は引数を 1 つも取っていません。表示に必要な値は、自分の中にすでにあるからです。「引数で毎回渡す」から「自分が持っている」へ変わったのが、クラスを使う一番の変化です。

    解説

    Java では本来 TodoItem.java という別ファイルにクラスを分けます。ただしこの演習エディタは 1 ファイルしか扱えないので、Solution クラスの中に static class TodoItem { ... } と入れ子で書きます。この static は「外側の Solution に紐づく内側のクラス」という意味で、メソッドの static とは別の話です。

    やってみよう

    右のエディタで personIntroduction(String name, int age) を完成させます。ただし、受け取った 2 つをその場でつなぐのではなく、Person クラスを自分で組み立ててから使ってください。

    Solution の中に入れ子で Person を書き、名前と年齢のフィールドを持たせ、コンストラクタで受け取り、自己紹介の文字列を返すメソッドを 1 つ足します。personIntroduction の仕事は、new で 1 人ぶん作って、そのメソッドを呼んで返すだけになります。返す書式は課題の要件どおりに、カッコと半角スペースの位置まで合わせてください。

    緑になったら、Person を 2 人ぶん作って、それぞれのメソッドを呼んでみてください。同じクラスから生まれても、中身は互いに干渉しません。設計図は 1 枚、そこから作られる実体は何個でも、という関係が手で確かめられます。

    要件

    1. クラス名は Solution、メソッド名は personIntroduction、引数は String name と int age の 2 つにすること
    2. メソッドの戻り値の型は String で、"name (age)" の形式 (名前のあとに半角スペース、(、年齢、) を続ける) で返すこと
    3. Person 内部クラスを定義し、new Person(name, age) でインスタンスを作って introduce() を呼び出す流れで実装すること

    ヒント

    `Person` クラスのコンストラクタでは `this.name = name;` `this.age = age;` のようにフィールドに引数を代入します。`this.` を付け忘れると引数を引数自身に代入してしまうので注意してください

    `introduce()` の中は `return this.name + " (" + this.age + ")";` のように文字列連結で書けます。`Java` では `String + int` の `+` は自動で文字列連結になるので、`this.age` をそのままつなげて大丈夫です

    `(` の前と `)` の後の空白に注意。期待値は `"太郎 (25)"` のように名前のあとに **半角スペースが 1 つ**、`(` と数字の間にはスペースなし、`)` の後ろにもスペースなしの形です

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

    関連レッスン

    • Product クラスで税込価格

      商品を表す Product クラスを設計し、税込価格を返すメソッドをクラスの中に閉じ込める練習を通じて、オブジェクト指向の最小単位を体に馴染ませる。

    • 銀行口座クラス

      残高という状態を持つ Account クラスを設計し、deposit / withdraw / getBalance を通して「データとふるまいをひとまとめにする」というオブジェクト指向のうま味と、validation を内側に閉じ込める設計を体に馴染ませる。

    • toString のオーバーライド

      Object クラスの toString をオーバーライドして、自作クラスの中身を読みやすい文字列で表現しよう。

    • クラスとオブジェクト クイズ

      クラス定義 / フィールド / メソッド / コンストラクタ / this / カプセル化を 4 択クイズ 1 問で総復習する章末まとめ。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 変数データに名前をつけて参照する仕組み
    • メソッドクラスに属する関数
    • クラスデータと振る舞いを束ねる単位
    • フィールドクラスが持つデータ
    • コンストラクタインスタンス生成時の初期化処理
    • 引数位置引数=順番で渡す。
    • 設計何をどう作るかを決める前工程
    • 戻り値呼び出し元への返答を表す点線矢印
    main.java
    エディタを読み込んでいます

    メモ

    Person クラスを作る

    ⌘S で保存