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 に置き換えます。プライベートの場合は再割り当てできません。