クラス f {
private $str = "123";
public function fun() {
echo $this->str; }
}
class s extends f {
public $str = "abc";
$s = new s();
$s->fun();
出力: 123
class f {
public $str = "123";
echo $ out : abc
最初の出力は非常にわかりにくいですが、なぜ親クラスの属性値が出力されるのでしょうか。記憶を分析するのを手伝ってもらえますか?説明するために写真があった方が良いでしょう。ありがとうございます。
ディスカッションへの返信 (解決策)
プライベート プロパティは継承されません
プライベート プロパティは、それが定義されているクラスのメソッドを使用してのみアクセスできます
プライベート プロパティは継承されません
プライベート プロパティは、定義されているクラスのメソッドを使用してアクセスされる メソッド アクセス
これはまだ理解していますが、混乱しているのは、サブクラスで属性を再定義したのに、なぜメソッドを呼び出すと親の属性値が出力されるのかということです。クラス?
プライベートなものは不可侵です
プライベートプロパティはサブクラスによって上書きできません。プライベートプロパティであり継承できないため、当然上書きできません
手法は継承されているので、まず自分の領域で属性を探すのは当然ですか?
説明がわかりません。 。 。 。
Baidu を見て理解しました。この文を見てください。
親クラスにプライベート属性がある場合。この場合、親クラスのメソッドは親クラスのプライベート プロパティのみを提供します。