第7章 標準クラスライブラリ / 第5回 模擬試験

PHPのクラスとオブジェクトの関係に関する次の記述のうち、正しいものはどれか。

クラスはオブジェクトの設計図(雛形)であり、`new`によって実体化したものがオブジェクト(インスタンス)である。 正解
クラスとオブジェクトは全く同じものを指す用語である。
1つのクラスから生成できるインスタンスは1つだけに制限される。
オブジェクトはクラスの定義なしに生成することができる。
解説
クラスは、オブジェクトが持つべきプロパティやメソッドを定義した「設計図(雛形)」であり、`new クラス名()`によってその設計図を基に実際に生成された実体が「オブジェクト(インスタンス)」です。 他の選択肢が誤りである理由は次の通りです。 ・クラスとオブジェクトは異なる概念です。クラスは「設計図」という抽象的な定義、オブジェクトはその設計図から作られた「具体的な実体」を指します。 ・1つのクラスから、`new`を何度でも呼び出すことで複数のインスタンスを生成できます(それぞれが独立したプロパティの値を持てます)。「1つだけに制限される」は誤りです。 ・オブジェクトを生成するには、必ず元となるクラス(無名クラスであっても`class`キーワードによる定義)が必要です。「クラスの定義なしに生成できる」は誤りです。 例: ``` class User { public function __construct(public string $name) {} } $user1 = new User('Taro'); // Userクラスから生成された1つ目のインスタンス $user2 = new User('Jiro'); // 2つ目のインスタンス($user1とは別物) ``` (参照: 独習PHP 第4版 第7章 標準クラスライブラリ 7.1.2節 クラスとオブジェクトの関係 p.309〜310)