php 从父类继承的方法无法访问子类的私有属性
class Base
{
public function echoProperty()
{
echo $this->id;
}
}
class subClass extends base
{
private $id;
//public $id;
function __construct()
{
$this->id = '15';
}
}
$class = new subClass();
$class->echoProperty();
结果:Fatal error: Cannot access private property subClass::$id in D:\www\test\php\domains_manager\classes\db\test.php on line 31
这是怎么一个原理呢?从父类继承的方法应该就是相当于自己的方法,没有道理不能访问自己的私有属性吧?如果把private改为public就可以访问了。
追问:可能从继承的机制上说一下吗?现在我是在子类上定义一个私有的属性,而不是在父类上定义。子类继承父类的方法时,这个方法不算是子类自己拥有的吗?可能从继承的机制上说一下吗?现在我是在子类上定义一个私有的属性,而不是在父类上定义。子类继承父类的方法时,这个方法不算是子类自己拥有的吗?
答案:private表示私有的,只有本类内部可以使用。如果不想继承但又能在外部使用 ,请用protected
其他:<?php
class Base
{
protected $id;
public function __construct()
{
$this->id = 15;
}
}
class subClass extends base
{
public function echoProperty()
{
echo $this->id;
}
}
$class = new subClass();
$class->echoProperty();
?> 用private 修饰的方法只能在本类产生的对象中使用,protected修饰的则是能在本类以及子类的对象内部调用,public修饰的则没有限制,随意访问
上一个:php文件可以生成可运行的exe程序吗
下一个:php语言好不好学,java怎么样?