【Java初心者向け】引数なしのコンストラクタを自分で書いたらそれもデフォルトコンストラクタ?

結論から言うと…
いいえ。引数なしのコンストラクタを自分で書いたとしても、それは「デフォルトコンストラクタ」ではありません。
デフォルトコンストラクタと明示的な引数なしコンストラクタの違い
デフォルトコンストラクタとは?
Javaで「デフォルトコンストラクタ」と呼ばれるのは、以下の条件を満たすときだけです:
- 開発者がクラスに何のコンストラクタも定義していない
- Javaコンパイラが自動的に挿入する引数なしのコンストラクタ
つまり、あなたがコンストラクタを自分で書いた時点で、それはもう「デフォルト」ではなく明示的なコンストラクタになります。
例で見てみよう
Javaが自動でつける「デフォルトコンストラクタ」
public class Apple {
// コンストラクタなし → Javaが自動で次のようなものを入れてくれる
// public Apple() {}
}
自分で書いた引数なしのコンストラクタ(これはデフォルトではない!)
public class Apple {
public Apple() {
System.out.println("りんごが作られました");
}
}
このように自分で書いたコンストラクタは、「引数がない」だけであり、「デフォルト」ではないという点に注意しましょう!
h2: じゃあ何が違うの?
項目 | デフォルトコンストラクタ | 明示的な引数なしコンストラクタ |
---|---|---|
誰が定義? | Javaコンパイラ | 開発者(あなた) |
存在条件 | 他のコンストラクタが定義されていないとき | 常に任意で定義可能 |
挙動のカスタマイズ | 不可(空で何もしない) | 可能(処理を追加できる) |
h2: つまりどう覚えると良い?
「デフォルトコンストラクタ」という言葉はJavaが自動でつけてくれるコンストラクタのこと。
引数なしのコンストラクタとは、開発者が書いた「空のコンストラクタ」も含む一般的な言い方です。
なので、
- 自動で生成 → デフォルトコンストラクタ
- 自分で書いた → 引数なしコンストラクタ(でもデフォルトではない!)
と整理しておくと混乱しません!
h2: 今後の学習のヒント
この話がクリアになったら、次は以下も押さえていきましょう!
- 「コンストラクタのオーバーロード」:複数のコンストラクタを使い分ける方法
- 「this()とsuper()」の違い:同じクラス or 親クラスのコンストラクタを呼び出す
- 「初期化ブロック」との違い:どこで初期化処理を書くべきかの見極め
どんどんクラス設計が柔軟になりますよ!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。