ホームページ >バックエンド開発 >PHPチュートリアル >相続に関して疑問があるので教えていただけると幸いです。

相続に関して疑問があるので教えていただけると幸いです。

WBOY
WBOYオリジナル
2016-06-23 14:39:26889ブラウズ

クラス 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 を見て理解しました。この文を見てください。
親クラスにプライベート属性がある場合。この場合、親クラスのメソッドは親クラスのプライベート プロパティのみを提供します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。