カテゴリー:
クラスとオブジェクト
閲覧数:895 配信日:2013-03-04 00:00
概要
同じクラスをもとに生成された複数のインスタンス同士は全くかかわりがない(個々のインスタンスは完全に独立している)
・言い換えると、クラスが同じなので性質は同じだが、各インスタンスが保持しているデータはインスタンス独自のもの(他のインスタンスへは一切影響を与えない=クラスとインスタンスの関係は1対1ではない)
確認してみる
・同じクラスをもとに生成された複数インスタンスの内、1インスタンスのプロパティだけ値を変更してみる
例
・ファイター設定画面をもとに、2人のファイターを生成
・1人だけ5ポイント分戦う
・その後、2人のそれぞれの現在のレベルを確認
・1人はレベル5でもう1人はレベル0、という内容
class Fighter{
private $level = 0; // レベル
public function fight($point){ // 戦う
$this->level += $point; // 戦った経験値分、レベルを加算
}
public function getLevel(){ // レベル取得
return $this->level;
}
}
// 2人のファイターのインスタンスを生成
$fighter1 = new Fighter();
$fighter2 = new Fighter();
$fighter1->fight(5);// ファイター1だけ戦ってみる
// 両方のファイターのレベル取得
$level1 = $fighter1->getLevel();
$level2 = $fighter2->getLevel();
print "ファイター1はレベル" . $level1 . "になりました\n";
print "ファイター2はレベル" . $level2 . "になりました";
結果
ファイター1はレベル5になりました
ファイター2はレベル0になりました
ファイター2はレベル0になりました