104 「static修羅道」 Step07 問題


問題

あなたは、User クラスのインスタンスを生成するたびに、
一意の連番ID(ユーザーID) を自動的に割り振る仕組みを作ろうとしています。

IDは 1, 2, 3… と順に増加し、すべての User インスタンスで重複せずに一意になる必要があります。

このために、static 変数を使って、インスタンス生成時に自動的にIDが割り振られるようにしてください。

以下のような出力になるように実装してください:

[ID: 1] 名前: Alice
[ID: 2] 名前: Bob
[ID: 3] 名前: Carol

要件

  • User クラスを作成すること
  • staticnextId 変数(int型)を用意し、IDの連番管理を行うこと
  • 各インスタンスは id(int型)と name(String型)を保持すること
  • コンストラクタで id を自動的に割り当てること(nextId++
  • printInfo() メソッドで [ID: x] 名前: y の形式で出力すること
  • 出力には System.out.println を使用すること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    User u1 = new User("Alice");
    User u2 = new User("Bob");
    User u3 = new User("Carol");

    u1.printInfo();
    u2.printInfo();
    u3.printInfo();
  }
}

ヒント

  • nextId はすべてのインスタンスで共有する必要があるので static
  • id は個々のインスタンス専用なので非static
  • コンストラクタの中で id = nextId++ とすると一意の番号を割り振れる

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」