プログラミングの用語一覧へ
このページの目次
プログラミング中級図解あり

コンストラクタとは?

読み方:コンストラクタ

最終更新:2026/08/18

3秒でわかる

インスタンスが作られる瞬間に自動で走る初期化用の処理。必要な値を最初に受け取り、中途半端な状態のオブジェクトを生ませない役割を持ちます。

30秒図解

もう少し詳しく

どういうものか

コンストラクタは、クラスからインスタンスを生成するときに自動的に呼ばれる初期化処理です。Java ではクラス名と同じ名前のメソッド、Python では __init__、JavaScript や TypeScript では constructor という名前で書きます。役割は共通していて、フィールドに初期値を入れ、そのオブジェクトが以後正しく振る舞うための前提を整えます。

なぜ必要か

生成した後に setName() や setPrice() を順に呼ぶ方式だと、どれか 1 つを呼び忘れたオブジェクトが世の中に出回ります。壊れているのは生成時点なのに、エラーが出るのは値を使う遥か後ろの行なので、原因を辿るのに時間がかかります。必須の値をコンストラクタの引数にしてしまえば、渡していないコードはそもそもコンパイルできません。

具体例

public class Order {
    private final String itemId;
    private final int quantity;

    public Order(String itemId, int quantity) {
        if (quantity <= 0) throw new IllegalArgumentException("数量は1以上");
        this.itemId = itemId;
        this.quantity = quantity;
    }

    public Order(String itemId) {
        this(itemId, 1); // 別のコンストラクタへ委譲する
    }
}
class Order:
    def __init__(self, item_id, quantity=1):
        if quantity <= 0:
            raise ValueError("数量は1以上")
        self.item_id = item_id
        self.quantity = quantity

つまずきやすいところ

  • Java でコンストラクタを 1 つでも定義すると、引数無しの既定コンストラクタは自動生成されなくなる。フレームワークが引数無しを要求して起動に失敗する事故が起きる

  • 戻り値の型を書くと、それはコンストラクタではなく同名の普通のメソッドになる

  • Python の __init__ で self. を付け忘れると、ローカル変数に代入しただけで終わる

  • Python の既定引数にリストや辞書を書くと、全インスタンスで同じ物を共有してしまう

  • コンストラクタで通信や重い処理を行うと、テストで生成するだけで外部に繋ぎに行く
  • 似た用語との違い

    デストラクタやファイナライザは破棄時の処理で、コンストラクタの対になります。ファクトリメソッドは生成手段に名前を付けたり、条件で返す型を変えたりできる点が違います。

    覚え方

    「開店準備」です。準備が終わるまで店は開かない、という保証を型の上で表現する仕組みだと考えると使いどころが決まります。

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地コンストラクタプログラミング

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    このコースが入っている学習分野

    Javaコースの全編を見る