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,换成私有的就不能被重新赋值。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号