コース一覧
    Java入門:クラスとオブジェクト
    コンストラクタ

    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分

    コンストラクタ

    new した直後は、まだ空っぽ

    前のレッスンで new を覚えました。ただ、いまの書き方だと、作ったあとにフィールドを 1 つずつ埋める作業が残ります。

    Java

    Cat c = new Cat();
    c.name = "タマ";
    c.age = 3;

    本当にやりたいのは 1 行目だけなのに、3 行かかっています。しかも c.age = 3; を書き忘れても Java は何も言いません。int のフィールドは 0、String のフィールドは null という初期値のまま放置され、あとから null が混ざった文字列が出てきて、ようやく気づきます。猫が 10 匹に増えれば、この埋め忘れは 10 回ぶんの地雷になります。

    値を渡してから作る

    そこで、new のカッコの中に値を渡せるようにします。そのための書き方が コンストラクタ です。

    Java

    class Cat {
        String name;
        int age;
    
        Cat(String n, int a) {
            name = n;
            age = a;
        }
    }
    
    Cat c = new Cat("タマ", 3);

    Cat(String n, int a) の行がコンストラクタです。ふつうのメソッドと違うところは 2 つあります。

    • 名前を クラス名とまったく同じ にする
    • 戻り値の型を書かない。void も書かない

    この 2 つが揃っているときだけ、Java はこれを「new されたときに動くもの」として扱います。new Cat("タマ", 3) と書いた瞬間に中の 2 行が走り、フィールドが埋まった状態の猫が返ってきます。もう埋め忘れようがありません。

    解説

    public void Cat(String n, int a) のように戻り値の型を書いてしまうと、Java はこれをコンストラクタではなく「たまたま Cat という名前のメソッド」として読みます。クラス定義の側はエラーにならず、離れた場所の new Cat("タマ", 3) だけが赤くなるので、原因にたどり着きにくい間違いです。

    引数ありを書くと、引数なしが消える

    これまで new Cat() と書けていたのは、コンストラクタを 1 つも書いていないクラスに対して、Java が引数なしのものを黙って用意してくれていたからです。

    自分でコンストラクタを 1 つでも書くと、この「黙って用意」は止まります。

    Java

    Cat c = new Cat();
    // constructor Cat in class Cat cannot be applied to given types

    さっきまで動いていた行が、Cat(String n, int a) を足しただけで赤くなります。引数なしも使いたいなら、そちらも自分で書き足してください。

    やってみよう

    右のエディタで bookFullTitle(String title, String author) を完成させます。本のタイトルと著者を受け取って、1 本の文字列にまとめて返すメソッドです。区切りに挟む文字は、前後の半角スペースまで課題の要件どおりに合わせてください。

    まずはメソッドの中で直接組み立てて構いません。テストが緑になったら、Book クラスを自分で書いて、コンストラクタでタイトルと著者を受け取り、その値を使って文字列を組み立てるメソッドを足す ─ という形に書き換えてみてください。「作るときに値を渡す」という感覚は、書き換えたときにいちばんはっきり分かります。

    要件

    1. クラス名は Solution、メソッド名は bookFullTitle、引数は String title と String author の 2 つにすること
    2. 戻り値の型は String で、title + " by " + author の形の文字列を返すこと
    3. title と author の間に挟む文字列は by (前後に半角スペース 1 つずつ) を厳密に守ること

    ヒント

    `Java` の文字列結合は `+` 演算子で行います。`title + " by " + author` のように `String` を `+` でつなぐと 1 つの新しい `String` ができます

    間に挟む文字列は ` by ` です。スペースの有無や大文字小文字 (`By` ではなく `by`) を厳密に守ってください

    引数を受け取る順番は宣言と同じ位置で決まります。`bookFullTitle(title, author)` の順番でメソッド側にそのまま流れ込むので、入れ替える必要はありません

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

    関連レッスン

    • this キーワード

      this は「このオブジェクト自身」を指す参照です。フィールドと引数の名前衝突を解決したり、メソッドチェーンを書いたり、別のコンストラクタを呼んだりするために使います。

    • カプセル化 (private と getter)

      `private` フィールドと `public` な getter / setter を使って、データを安全に守る「カプセル化」を学ぼう。負の入金を弾く `safeAccount(int initial, int deposit)` を書く。

    • Person クラスを作る

      Person クラスを設計しながら、フィールド・コンストラクタ・メソッドの基本を身につけよう。インスタンスから自己紹介の文字列を取り出す課題に挑戦する。

    • Product クラスで税込価格

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

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

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

    • フィールドクラスが持つデータ
    • コンストラクタインスタンス生成時の初期化処理
    • メソッドクラスに属する関数
    • クラスデータと振る舞いを束ねる単位
    • 戻り値呼び出し元への返答を表す点線矢印
    • 引数位置引数=順番で渡す。
    • テストバグを見つける工程
    main.java
    エディタを読み込んでいます

    メモ

    コンストラクタ

    ⌘S で保存