サブクラスが親クラスの属性をオーバーライドする問題。 。 。 。疑問を解決する

WBOY
リリース: 2016-06-23 14:27:10
オリジナル
1040 人が閲覧しました

PHP のサブクラスが親クラスの属性をオーバーライドする問題

<?php	/**	 * 	子类重写父类方法和属性	 **/	class Employer	{		protected $sal=3000;		public function getSal()		{			return $this->sal;		}			}	class Manager extends Employer	{		protected $sal=5000;		public function getParentSal()		{			return parent::getSal(); //调用父类方法 返回父类属性,为什么会是5000		}		public function getSal()		{			return $this->sal;		}	}	$manager = new Manager;	echo $manager->getParentSal().PHP_EOL;//5000 这是为什么也是5000呢,但是在5.3以下版本好像是3000,求解释????	echo $manager->getSal();//5000?>
ログイン後にコピー

ディスカッションへの返信 (解決策)

なぜダメなのでしょうか?

5.2.10
5000 5000

5.4.20
5000 5000

どうしてでしょうか?

5.2.10
5000 5000

5.4.20
5000 5000
モデレーターが詳しく説明してもらえますか?親クラスのプロパティにアクセスするにはparent::を使用するのですが、サブクラスのプロパティを読み取るにはどうすればよいですか?書き換える場合、どのように書き換えられるのでしょうか?

protected は単なる保護モードであり、当然サブクラスによってオーバーライドされます

protected を private に置き換えます。プライベートの場合は再割り当てできません。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート