Home  >  Article  >  Backend Development  >  子类重写父类属性的问题。。。。求解惑

子类重写父类属性的问题。。。。求解惑

WBOY
WBOYOriginal
2016-06-23 14:27:101037browse

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,换成私有的就不能被重新赋值。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn