カテゴリー:
クラスとオブジェクト
閲覧数:896 配信日:2013-11-12 20:50
概要
「プロパティ」オーバライド
・子クラスのインスタンスを生成
・子クラス内での$thisの挙動確認
→ 全て子クラス
ケース1
・親クラスプロパティprotected
・子クラスプロパティprotected
→子クラスプロパティ
class Oya{
protected $price="100";
}
class Ko extends Oya{
protected $price="50"; // プロパティをオーバーライド
public function getPrice(){ // ゲッター
return $this->price;
}
}
$ko = new Ko();//子クラスのインスタンスオブジェクトを生成
echo '子クラスのインスタンスオブジェクトプロパティ' . $ko->getPrice(),PHP_EOL
// 処理結果
// 子クラスのインスタンスオブジェクトプロパティ50
ケース2
・親クラスプロパティprivate
・子クラスプロパティprivate
→子クラスプロパティ
※子クラス$thisから見た場合、privateプロパティの上書きは、子クラスにて新定義されたのと同じ扱い
class Oya{
private $price="100";
}
class Ko extends Oya{
private $price="50"; //子クラス$thisから見た場合、privateプロパティの上書きは、子クラスにて新定義されたのと同じ扱い
public function getPrice(){ // ゲッター
return $this->price;
}
}
$ko = new Ko();//子クラスのインスタンスオブジェクトを生成
echo '子クラスのインスタンスオブジェクトプロパティ' . $ko->getPrice(),PHP_EOL;
// 処理結果
// 子クラスのインスタンスオブジェクトプロパティ50
ケース3
・親クラスプロパティprivate
・子クラスプロパティprotected
→子クラスプロパティ
class Oya{
private $price="100";
}
class Ko extends Oya{
protected $price="50";
public function getPrice(){ // ゲッター
return $this->price;
}
}
$ko = new Ko();//子クラスのインスタンスオブジェクトを生成
echo '子クラスのインスタンスオブジェクトプロパティ' . $ko->getPrice(),PHP_EOL;
// 処理結果
// 子クラスのインスタンスオブジェクトプロパティ50