親クラスにプライベート プロパティがある場合は、この文をよく読んでください。この場合、親クラスのメソッドは親クラスのプライベート プロパティのみを提供します。
以下は理解を深めるための一連の例です。
この例は、サブクラスで属性 $sal が再定義されているように見えますが、システムは親クラスの属性を返します。
12 行目でサブクラスをコメントアウトすると、 echo $manager->getSal(); のメソッドと結果は、親クラス $sal 3000 のプライベート プロパティです。
zend デバッグ状態を開いて、メモリ内で何が起こっているかを確認します。下部に $sal が 2 つあることに注意してください。それぞれ 3000 と 5000 です。
コードをコピーします
コードは次のとおりです:
クラス 従業員{
private $sal=3000;
public function getSal(){
return $this->sal
}
}
クラス マネージャー
protected $sal=5000; public function getParentSal(){
return $this->sal;
}
$manager = new Manager();
echo "PHP ".phpversion()"
"; >getSal();
?>
プログラムの実行結果:
コードは次のとおりです:
3000
属性を変更の$sal親クラス protected の場合、サブクラスは親クラスの属性をオーバーライドします。メモリには $sal が 1 つだけあります。
コードをコピーします
コードは次のとおりです:
class従業員{ protected $sal=3000; public function getSal(){ return $this->sal;
クラスマネージャーは従業員を拡張します {
protected $sal=5000;
public function getParentSal(){
return $this->sal;
}
$manager = new Manager(); (). "
";
echo $manager->getSal()?>
コードをコピーします:
PHP 5.3.8
50 00
Java を学習したことがある場合は、すべてを理解するのが難しいと感じるでしょう。
Java では、サブクラスが作成されると、親クラスのプロパティとメソッドがメモリ内に作成され、コンストラクターも呼び出されます。
これは、PHP5 では当てはまりません。PHP5 は、親クラスを呼び出すときに、parent-> の代わりにparent:: を使用します。これは、PHP5 が親クラスをメモリ内に作成しないことを示すのに十分です。 PHP5 は Java よりも継承を単純化したいと考えています。
とにかく慣れてください。
http://www.bkjia.com/PHPjc/326161.html
www.bkjia.comtrue
http://www.bkjia.com/PHPjc/326161.html
技術記事
親クラスにプライベート プロパティがある場合は、この文をよく読んでください。この場合、親クラスのメソッドは親クラスのプライベート プロパティのみを提供します。 一連の例を通して理解を深めてみましょう...