概要
クラスは設計図に過ぎないので、実際にデータを保持して使うには インスタンス (実体) を作る必要がある。$user = new User(); のように new クラス名() を書くと、User の設計図から実体が 1 つ作られて変数に入る。ここから初めて $user->name = "太郎"; のようにプロパティに値を代入し、データを保持できるようになる。
1 つのクラスからインスタンスは 何個でも 作れて、それぞれ独立した状態を持つ。$a = new User(); と $b = new User(); で 2 つ作り、$a->name = "太郎"; $b->name = "花子"; とすれば、a と b はそれぞれ別の名前を持つ別人として共存する。タイ焼きの型枠 (クラス) から、何個でもタイ焼き (インスタンス) を焼ける、という関係性をここで確認する。
混同しやすいのが 「クラス」と「インスタンス」の用語。User (クラス) と $user (インスタンス) は別物で、片方を「ユーザー」と曖昧に呼ぶと議論が滑る。本シリーズでは「クラス = 設計図、インスタンス = 実体」「クラス名は大文字始まり、インスタンスは小文字始まりの変数」という命名規則を意識的に使い分けるので、読み書きするときに区別を付けておく。
学習目標
new クラス名()でインスタンス (実体) を作れる- 1 つのクラスから何個でもインスタンスを作れることを理解する
- インスタンスは変数に入れて使うことを理解する
ドリル
| no | 内容 |
|---|---|
| 01 | User インスタンスを 1 つ作って name を出す |
| 02 | User インスタンスを 2 つ作って両方の name を出す |
📝 演習: ドリル 01 — インスタンスを 1 つ作る
問題
User クラス (プロパティ public string $name;) を定義し、new User() で 1 つインスタンスを作り、name に "太郎" を入れて出力してください。
期待される出力:
太郎ヒント
class User { public string $name; }を書く$u = new User();でインスタンスを作る$u->name = "太郎";で値を入れるecho $u->name . "\n";で出力
📝 演習: ドリル 02 — インスタンスを 2 つ作る
問題
User クラス (プロパティ public string $name;) を定義し、new User() で 2 つ のインスタンスを作ってください。
- 1 つ目の
nameには"太郎"を入れる - 2 つ目の
nameには"花子"を入れる
その後、2 つの name をこの順で出力してください。
期待される出力:
太郎
花子ヒント
new User()を 2 回呼ぶと別々のインスタンスが作れる- それぞれ別の変数 (
$aと$bなど) に入れる - 一方の
nameを変えても、もう一方には影響しない