class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo "This is Myclass".PHP_EOL;
echo $this->public.PHP_EOL;
echo $this->protected,PHP_EOL;
echo $this->private,PHP_EOL;
}
}
class MyClass2 extends MyClass
{
public $public = 'Publi2c';
protected $protected = 'Protected2';
function printHello2()
{
echo $this->public.PHP_EOL;
echo $this->protected,PHP_EOL;
echo parent::$public,PHP_EOL; //这里报错了。Uncaught Error: Access to undeclared static
//property: MyClass::$public
}
}
$obj2 = new MyClass2();
$obj2->printHello2();
请问我注释这里为什么出错了?
3 回答

慕田峪9158850
TA贡献1794条经验 获得超8个赞
子类继承了父类,所以那个属性就是子类的对象实例的属性了。
没错,非静态属性是属于对象实例的,不是属于类的,所以不分子类父类。
静态属性才是属于类的,才能通过parent::
、static::
、self::
这些关键字来访问。
方法也是类似的。
- 3 回答
- 0 关注
- 544 浏览
添加回答
举报
0/150
提交
取消