Home > Article > Backend Development > 子类重写父类属性的问题。。。。求解惑
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,换成私有的就不能被重新赋值。