26
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ポケモン×Java】知識編 クラス#2 ~コンストラクタの存在意義と可能性~

Last updated at Posted at 2025-07-09

この記事をまだ読んでない方はこちら
👉 【ポケモン×Java】第2章🔥:『ゆけ、ピカチュウ!』~コンストラクタとインスタンス~

🍃 はじめに

「`new Pikachu()` って書いたら、ピカチュウが登場した!けど……何が起きてるの?」

そんな素朴な疑問から始まる今回のテーマは、**Javaの“はじまりの魔法”**――「コンストラクタ」。

「自分で書いた覚えないのに動いてる!」「書く必要ある?」「どんなふうに使うのが正解?」

そんな疑問を、ポケモンたちの世界で一緒に紐解いていこう!

📚 目次

  1. コンストラクタってなに?まずは正体を知ろう
  2. 書かなくても動くのはなぜ?
  3. 書くならどう書く?コンストラクタの基本形
  4. 初期化ってなに?
  5. 引数つきコンストラクタで冒険をカスタマイズ!
  6. まとめ:コンストラクタは冒険の準備フェーズ

1. コンストラクタってなに?まずは正体を知ろう

コンストラクタとは、クラス内の処理を使うとき、最初に実行する特別なメソッド
Javaでは、こんなふうに書かれているよ:

例:
「ポケモンがモンスターボールから出てくるときに、何をするか決める場所」!

Pikachu.java
class Pikachu {

    // コンストラクタ start
    Pikachu() {
        System.out.println("ピカチュウが登場!");
    }
    // コンストラクタ end
}

📒 トレーナーメモ①

  • クラス名と同じ名前のメソッド Pikachu()
  • 戻り値は書かない(voidもダメ!)
    ※ voidがつくと、ただのメソッドになるぞ!

この「登場時の処理」を書くのが、コンストラクタ(特別なメソッド)なんだ!

2. 書かなくても動くのはなぜ?

えっ?「自分でコンストラクタなんて書いた覚えないけど…?」って人、多いはず!
実は Java は、自分で何も書かなければ

「空のコンストラクタ(デフォルトコントラクタ)」
を自動で用意してくれる。

Pikachu.java
class Pikachu {
    // コンストラクタ start
    // 書いてない、、、
    // コンストラクタ end
    
    void cry() {
        System.out.println("ピカ〜〜ッ!");
    }
}

このクラスでも、

BattleStage.java
class BattleStage {
    public static void main(String[] args) {
        Pikachu pi = new Pikachu();
    }
}

って書けば、ちゃんと動く。
これは「デフォルトコンストラクタ(引数なし)」が裏で用意されてるから!

3. 書くならどう書く?コンストラクタの基本形

でも、自分で何か処理をしたいなら、やっぱり自分で書く必要があるよね。

例:
ピカチュウをモンスターボールから出したときに鳴き声を出す。

Pikachu.java
class Pikachu {

    // コンストラクタ start
    Pikachu() {
        System.out.println("ピカチュウが登場!");
        cry();
    }
    // コンストラクタ end
    
    void cry() {
        System.out.println("ピカ〜〜ッ!");
    }
}

このように、コンストラクタ内に書くことで、
クラスを呼び出すときに、最初に実行したい処理が呼び出される。

4. 初期化ってなに?

ここで新しい言葉が出てくるよ。それが「初期化」。

これは、クラスの フィールド(属性) に、必要な 情報 をセットしておくこと!
これが「初期化」だ。

例:

Pikachu.java
class Pikachu {
    String nickname;

    // コンストラクタ start
    Pikachu() {
        nickname = "ピカ太郎";
    }
    // コンストラクタ end
}

📒 トレーナーメモ②
このコードでは、「nickname」というフィールドに、
最初のニックネームをセットしている。
(例:ここで何も書かなかった場合、このピカチュウには
  ニックネームがついていないことになる!)


5. 引数つきコンストラクタで冒険をカスタマイズ!

ピカチュウごとに違うニックネームをつけたいときは、
引数を使ったコンストラクタが便利!

Pikachu.java
class Pikachu {
    String nickname;

    Pikachu(String name) {
        nickname = name;
    }
}
BattleStage.java
class BattleStage {
    public static void main(String[] args) {
        Pikachu pi1 = new Pikachu("ピカ太郎");
        Pikachu pi2 = new Pikachu("でんきまる");
    }
}

これで「ピカ太郎」「でんきまる」など、違う名前のピカチュウを自由に生み出せる!
コンストラクタって、そんなカスタム性を生む大事な存在!


6. まとめ:コンストラクタは冒険の準備フェーズ

ポイント 内容
書かなくてもOK Javaが自動でデフォルトを用意してくれる
書けば最初にやることを決められる セリフ・名前設定など自由に書ける
初期化の場として重要 フィールドの値をセットするタイミング
引数つきで柔軟性アップ クラスの個性を作れる

📒 トレーナーメモ③
イメージがつかなかったキミには、別のアドバイス!!
冒険を始める前にリュックの整理をするよね。
それが「コンストラクタ」の役目なんだ!
例:

コンストラクタ イメージ 記載例
未記入 リュックのみ用意 記載なし
引数なし リュック用意
(初期装備だけ指定可能)
Bag();
引数あり リュック用意
(ボール、きずぐすり等、
 好きに選べる!)
Bag(ball,medicine);

あとがき

ここまで読んでくれて、本当にありがとうございました。

「プログラミングって難しい…」って思ってた人も、
「ちょっと楽しいかも…!」って思ってもらえたらうれしいな。

次の投稿も、よろしくおねがいします。

💬 コメント・フィードバック歓迎!

「この章わかりやすかった!」
「これ表現まちがってない?」
「次は○○をやってほしい!」などなど、
お気軽にコメントで教えてくださいね!


26
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?