カテゴリ: Javaのクラスとオブジェクト 更新日: 2026/06/27

Java のコンストラクタとは?オブジェクト生成時に初期化する

123
Java のコンストラクタとは?オブジェクト生成時に初期化する

新人と先輩の会話形式で理解しよう

新人

「先輩、Javaでオブジェクトを作るときに、なんかコンストラクタって出てくるんですが、あれって何なんですか?」

先輩

「いい質問だね。Javaのコンストラクタは、オブジェクトを作ったときに最初に実行される特別なメソッドなんだよ。」

新人

「メソッドとは違うんですか?見た目は似てる気がしますけど…」

先輩

「たしかに似てるけど、役割は違うんだ。コンストラクタはオブジェクトの初期化専用で、自動で呼ばれるんだよ。詳しく説明していくね。」

1. Javaのコンストラクタとは?(やさしく基本を解説)

1. Javaのコンストラクタとは?(やさしく基本を解説)
1. Javaのコンストラクタとは?(やさしく基本を解説)

Javaのコンストラクタとは、オブジェクトを作るときに最初に実行される特別な処理のことです。クラスの中に定義しておくことで、オブジェクトを作ったときに自動で呼び出されます。

たとえば、オブジェクトが「人」だった場合、名前や年齢といった情報を最初に設定しておきたいですよね。そんなときにコンストラクタを使えば、オブジェクトが作られた瞬間にその情報を入れておくことができるのです。

まずは、コンストラクタの基本的な形を見てみましょう。


public class Person {
  String name;
  int age;

  // コンストラクタ
  public Person() {
    System.out.println("Personのオブジェクトが作られました");
  }
}

このコードでは、クラスと同じ名前のPerson()というメソッドが定義されています。これがコンストラクタです。戻り値(voidintなど)は書かず、クラス名とまったく同じ名前で書くのが特徴です。

このクラスからオブジェクトを作ると、自動的にこのコンストラクタが呼ばれます。


public class Main {
  public static void main(String[] args) {
    Person p = new Person();
  }
}

Personのオブジェクトが作られました

このように、コンストラクタはnewでオブジェクトを作ったときに実行されるので、初期化処理にとても便利です。

初心者の方でも、Javaでプログラムを作るうちに必ず使うようになるので、最初に基本をしっかり理解しておきましょう。

2. コンストラクタとメソッドの違い(初心者でもわかる比較)

2. コンストラクタとメソッドの違い(初心者でもわかる比較)
2. コンストラクタとメソッドの違い(初心者でもわかる比較)

Javaを学び始めたばかりの方にとって、「コンストラクタ」と「メソッド」は見た目がよく似ているので、混乱しやすいポイントです。ここでは、両者の違いをやさしく解説します。

まず、メソッドはクラスの中で定義される処理で、必要なときに自分で呼び出します。たとえば次のようなメソッドがあります。


public void introduce() {
  System.out.println("こんにちは、私は" + name + "です。");
}

このメソッドは、次のように呼び出します。


Person p = new Person();
p.introduce();

一方で、コンストラクタは次のように定義します。


public Person() {
  System.out.println("オブジェクトが作られました");
}

このコンストラクタは、new Person()を実行したときに自動的に呼び出されるという違いがあります。

メソッドとの違いをまとめると次のようになります。

項目 コンストラクタ メソッド
呼び出しタイミング オブジェクト生成時に自動で実行される 自分で呼び出す必要がある
名前 クラス名と同じ 自由に名前をつけられる
戻り値 書かない(voidもなし) 戻り値の型を書く

このように、コンストラクタは「作られた瞬間に自動で実行される」特別な処理であることがわかります。

Javaの初心者にとって、この違いを理解することはとても大切です。しっかりと使い分けられるようになると、オブジェクト指向の考え方も自然に身についていきます。

実際にPleiadesでコンストラクタとメソッドを使ったコードを書いて、動作の違いを確認してみましょう。そうすることで、より深く理解できるようになります。

3. 引数ありのコンストラクタを使う(名前や年齢を渡す例)

3. 引数ありのコンストラクタを使う(名前や年齢を渡す例)
3. 引数ありのコンストラクタを使う(名前や年齢を渡す例)

これまでのコンストラクタでは、特に何も情報を受け取らずに、ただオブジェクトが作られたことを知らせるだけでした。でも、実際にはオブジェクトを作るときに「この人の名前は?」「年齢は何歳?」などの情報を一緒に設定したくなる場面が多いです。

そんなときに使うのが「引数ありのコンストラクタ」です。引数というのは、オブジェクトを作るときに一緒に渡す情報のことです。

たとえば、次のようにPersonクラスを作ってみましょう。


public class Person {
  String name;
  int age;

  // 引数ありのコンストラクタ
  public Person(String n, int a) {
    name = n;
    age = a;
  }

  public void introduce() {
    System.out.println("こんにちは、私は" + name + "です。年齢は" + age + "歳です。");
  }
}

このクラスでは、コンストラクタにString nint aという2つの引数を受け取るようにしています。そして、それをnameageに設定しています。

では、このクラスからオブジェクトを作って使ってみましょう。


public class Main {
  public static void main(String[] args) {
    Person p1 = new Person("たろう", 20);
    Person p2 = new Person("はなこ", 18);

    p1.introduce();
    p2.introduce();
  }
}

こんにちは、私はたろうです。年齢は20歳です。
こんにちは、私ははなこです。年齢は18歳です。

このように、new Person("たろう", 20)のように書くことで、名前と年齢を最初から渡してオブジェクトを作ることができます。これが「引数ありのコンストラクタ」の使い方です。

この方法を使うと、オブジェクトを作ったあとでわざわざ名前や年齢を設定する必要がなくなります。作ると同時に初期化できるので、すっきりしたコードになります。

Javaでは、こうした「初期化処理」をスマートに行うためにコンストラクタを使うことが多いので、初心者の方もぜひPleiadesで実際に書いて試してみてください。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. 複数のコンストラクタを定義する(コンストラクタのオーバーロード)

4. 複数のコンストラクタを定義する(コンストラクタのオーバーロード)
4. 複数のコンストラクタを定義する(コンストラクタのオーバーロード)

Javaでは、同じクラスの中に「複数のコンストラクタ」を書くことができます。これを「コンストラクタのオーバーロード」といいます。むずかしく聞こえるかもしれませんが、やっていることはとてもシンプルです。

たとえば、「名前と年齢を渡したいときもあるけど、何も渡さずに作りたいときもある」…そんなときに、引数の違うコンストラクタを2つ用意しておくことができます。

次のようなPersonクラスを見てください。


public class Person {
  String name;
  int age;

  // 引数なしのコンストラクタ
  public Person() {
    name = "ななし";
    age = 0;
  }

  // 引数ありのコンストラクタ
  public Person(String n, int a) {
    name = n;
    age = a;
  }

  public void introduce() {
    System.out.println("こんにちは、私は" + name + "です。年齢は" + age + "歳です。");
  }
}

このクラスでは、コンストラクタが2つあります。1つは引数なしで「ななし」「0歳」を初期値にして作るコンストラクタ。もう1つは引数ありで、名前と年齢を指定できるコンストラクタです。

それぞれの使い方は次のようになります。


public class Main {
  public static void main(String[] args) {
    Person p1 = new Person(); // 引数なし
    Person p2 = new Person("けんた", 25); // 引数あり

    p1.introduce();
    p2.introduce();
  }
}

こんにちは、私はななしです。年齢は0歳です。
こんにちは、私はけんたです。年齢は25歳です。

このように、同じクラスでも使い方に応じて違うコンストラクタを用意しておくことで、より柔軟にオブジェクトを作ることができるようになります。

この仕組みは「コンストラクタのオーバーロード」と呼ばれますが、やっていることは「引数の数や型を変えた複数のコンストラクタを書く」だけです。

Javaの初期化処理では、このような柔軟性がとても役立ちます。たとえば、データが全部そろっているときは引数あり、あとで設定する場合は引数なし…というように使い分けができます。

初心者の方は、最初は1つのコンストラクタから始めても大丈夫ですが、慣れてきたら複数のコンストラクタも書いてみると、Javaの便利さがより実感できます。

ぜひ、Pleiadesで自分だけのクラスを作って、いろんなコンストラクタを定義して試してみてください。初期化処理の仕組みをマスターすれば、プログラム作りがもっと楽しくなりますよ。

5. コンストラクタを使わないとどうなる?(代入との違いを理解しよう)

5. コンストラクタを使わないとどうなる?(代入との違いを理解しよう)
5. コンストラクタを使わないとどうなる?(代入との違いを理解しよう)

ここまで読んで、「じゃあコンストラクタを使わずに、自分であとから代入すればいいのでは?」と思う方もいるかもしれません。たしかに、Javaではコンストラクタを使わなくても、あとからフィールド(名前や年齢など)に値を入れることはできます。

ですが、それでは「初期化が必ず行われる」という安心感がありません。たとえば、次のようなコードを見てみましょう。


public class Person {
  String name;
  int age;

  public void introduce() {
    System.out.println("こんにちは、私は" + name + "です。年齢は" + age + "歳です。");
  }
}

このPersonクラスには、コンストラクタがありません。では、このクラスを使ってみましょう。


public class Main {
  public static void main(String[] args) {
    Person p = new Person();
    p.introduce();
  }
}

こんにちは、私はnullです。年齢は0歳です。

結果を見ると、「名前」はnull、「年齢」は0と表示されました。これは、Javaが自動で設定した「初期値」です。文字はnull、数字は0になります。

でも、本当は「たろう」や「けんた」などの名前を入れたかったはずです。あとから代入すればいいのですが、うっかり忘れてしまうとこのようにnullのまま使ってしまうかもしれません。

そんなときにコンストラクタを使って初期化しておけば、オブジェクトを作った時点でちゃんと情報が入っているので安心です。

つまり、コンストラクタを使うことで「忘れずに情報を入れる」仕組みを作れるというのが、大きなメリットなのです。

初心者のうちは、コンストラクタを使ってオブジェクトの初期値を確実に入れるクセをつけると、安全でわかりやすいコードが書けるようになります。

6. 実践!自分でクラスを作って初期化してみよう

6. 実践!自分でクラスを作って初期化してみよう
6. 実践!自分でクラスを作って初期化してみよう

ここまでで、コンストラクタの基本から応用まで学んできました。今度は実際に、自分でクラスを作って初期化してみましょう。

例として、「Book」という本のクラスを作ってみます。本には「タイトル」と「価格」があるとしましょう。


public class Book {
  String title;
  int price;

  // コンストラクタ
  public Book(String t, int p) {
    title = t;
    price = p;
  }

  public void showInfo() {
    System.out.println("タイトル: " + title);
    System.out.println("価格: " + price + "円");
  }
}

このクラスでは、タイトルと価格をコンストラクタで受け取り、それぞれの情報に設定しています。

では、実際にこのBookクラスを使ってみましょう。


public class Main {
  public static void main(String[] args) {
    Book b1 = new Book("Java入門", 1500);
    Book b2 = new Book("やさしいオブジェクト指向", 1800);

    b1.showInfo();
    b2.showInfo();
  }
}

タイトル: Java入門
価格: 1500円
タイトル: やさしいオブジェクト指向
価格: 1800円

このように、クラスを自分で作ってコンストラクタを定義し、オブジェクトを作ったときに情報を入れておくことで、より実用的なプログラムが書けるようになります。

Pleiadesを使ってこのコードを自分で入力し、実行してみてください。エラーが出ないようにクラス名やスペルを丁寧に書くのがポイントです。

はじめての人でも、基本の形さえ覚えれば簡単にできるので、自分だけの「本」や「人」や「車」など、いろんなクラスを作って試してみましょう。

7. 振り返りと初心者へのメッセージ

7. 振り返りと初心者へのメッセージ
7. 振り返りと初心者へのメッセージ

ここまで、Javaのコンストラクタについて丁寧に学んできました。

コンストラクタとは、オブジェクトを作るときに「最初に実行される特別な処理」です。そしてこの処理を使って、名前や年齢などの情報を最初から入れておくことが「初期化」と呼ばれる動きでした。

引数がないコンストラクタ、引数があるコンストラクタ、そして複数のコンストラクタを作る「オーバーロード」など、使い方もいろいろありましたね。

代入との違いも理解できたでしょうか?あとから代入する方法は便利ですが、忘れたときにnull0のままになってしまうこともあります。そのため、コンストラクタを使うことで「情報を入れ忘れることを防ぐ」ことができます。

最初はコードを書くのが大変に感じるかもしれませんが、Pleiadesを使って何度も試していけば、すぐに慣れてきます。自分でクラスを作って、オブジェクトを初期化して、情報を表示してみることで、コンストラクタの使い方がしっかり身についていくはずです。

「Java」「コンストラクタ」「初期化」「オブジェクト生成」といったキーワードは、これからも何度も出てくる大事な用語です。今のうちにしっかり理解しておけば、これからの学習がぐっとラクになります。

少しずつでも大丈夫なので、焦らずじっくりと、Javaの世界に慣れていきましょう!

まとめ

まとめ
まとめ

Javaコンストラクタの役割と重要性を整理しよう

今回はJavaのコンストラクタについて、基本から応用までしっかりと学習しました。Javaのコンストラクタはオブジェクト生成時に自動で実行される特別な処理であり、オブジェクトの初期化を安全かつ確実に行うための重要な仕組みです。Javaプログラミングにおいてコンストラクタは、オブジェクト指向の基礎となる重要な概念であり、初心者が必ず理解しておくべきポイントです。

コンストラクタはオブジェクト初期化の中心的存在

Javaではクラスからオブジェクトを生成する際にnewキーワードを使用しますが、その瞬間に呼び出されるのがコンストラクタです。これにより、オブジェクトが作られたと同時に必要なデータを設定できるため、未初期化の状態を防ぐことができます。コンストラクタを適切に使うことで、プログラムの安全性と可読性が大きく向上します。


public class ConstructorSummary {
    String name;

    public ConstructorSummary(String n) {
        name = n;
    }

    public void show() {
        System.out.println("名前は" + name + "です");
    }

    public static void main(String[] args) {
        ConstructorSummary c = new ConstructorSummary("たろう");
        c.show();
    }
}

名前はたろうです

引数ありコンストラクタで柔軟な初期化を実現

引数ありコンストラクタを使うことで、オブジェクト生成時に異なる値を設定することが可能になります。これにより、同じクラスでも異なるデータを持つオブジェクトを簡単に作成できます。Java初心者の段階でも、この使い方を理解しておくことで、より実践的なプログラムを書くことができるようになります。

コンストラクタのオーバーロードで拡張性を高める

Javaでは複数のコンストラクタを定義することができ、これをコンストラクタのオーバーロードと呼びます。引数の数や型を変えることで、用途に応じたオブジェクト生成が可能になります。これにより、柔軟で再利用性の高い設計が実現できます。


public class OverloadSummary {
    String name;
    int age;

    public OverloadSummary() {
        name = "ななし";
        age = 0;
    }

    public OverloadSummary(String n, int a) {
        name = n;
        age = a;
    }

    public void show() {
        System.out.println(name + " " + age);
    }
}

コンストラクタを使わない場合のリスクを理解する

コンストラクタを使用しない場合、フィールドにはデフォルト値が設定されます。文字列はnull、数値は0となるため、意図しないデータで処理が進んでしまう可能性があります。これを防ぐためにも、コンストラクタで初期化を行うことが重要です。


public class DefaultValueSummary {
    String name;
    int age;

    public void show() {
        System.out.println(name + " " + age);
    }

    public static void main(String[] args) {
        DefaultValueSummary d = new DefaultValueSummary();
        d.show();
    }
}

null 0

実務で役立つコンストラクタの考え方

実務においては、コンストラクタを使って必須項目を確実に初期化することが非常に重要です。例えばユーザー情報や商品情報など、必ず値が必要なデータはコンストラクタで受け取る設計にすることで、バグの発生を防ぐことができます。また、可読性の高いコードを書くためにも、初期化処理はコンストラクタにまとめるのが基本です。

Java初心者が押さえるべきポイント

Javaのコンストラクタは、オブジェクト生成と初期化を同時に行うための重要な仕組みです。クラス名と同じ名前で定義し、戻り値を書かないという特徴をしっかり覚えておきましょう。また、引数ありコンストラクタやオーバーロードを使いこなすことで、より実践的なJavaプログラミングができるようになります。

先生と生徒の振り返り会話

生徒

コンストラクタはオブジェクトを作ったときに自動で実行されるんですね。

先生

その通りです。初期化処理の中心になる重要な仕組みです。

生徒

引数を使えば最初から値を設定できるのが便利ですね。

先生

実務でも必ず使う重要な書き方です。

生徒

コンストラクタを使わないとnullや0になるのは怖いですね。

先生

だからこそ初期化をコンストラクタで行うことが大切です。

生徒

オーバーロードで使い分けるのも理解できました。

先生

とても良い理解です。この考え方がJava上達の鍵になります。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaのコンストラクタとは具体的にどのような役割を持つものですか?初心者にもわかりやすく教えてください。

Javaのコンストラクタとは、クラスからオブジェクトを生成(インスタンス化)した瞬間に、自動的に一番最初に実行される特別な処理のことです。主な役割は「オブジェクトの初期化」です。例えば、人間クラスから「たろう」さんというオブジェクトを作る際、生成と同時に名前や年齢といった初期データをセットするために使用されます。プログラミング初心者の方にとって、オブジェクト指向を学ぶ上での最初の関門と言われますが、要するに「動かす前の準備運動」のようなものだと考えると理解しやすいでしょう。
Javaのクラスとオブジェクトの一覧へ
新着記事
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
Java
Javaのvar型の基礎
Javaのvar型の基礎知識を完全解説!初心者でも理解できる型推論
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク