2012-02-14 59 views
1

无法解释为什么会打印“\ n1”。私有财产不能被继承。这就是为什么构造函数应该设置新定义的public proverty的值,但“print $ b-> number”不打印任何内容,而“$ b-> printNumber()”打印“1”。在PHP中覆盖私有财产

class A 
{ 
    private $number; 

    public function __construct($number) 
    { 
     $this->number = $number; 
    } 

    public function printNumber() 
    { 
     print $this->number; 
    } 
} 

class B extends A 
{ 
    public $number; 
} 

$b = new B(1); 
print $b->number; 
print "\n"; 
$b->printNumber(); 

回答

2

私人在 “A” 定义。由于printNumber()也在“A”中定义,它将访问类“A”范围内的$ this->数字。所以预期结果。

class B extends A 
{ 
    public $number; 

    public function __construct($number) 
    { 
     $this->number = $number; 
    } 
} 

当然,你绝不会覆盖一个私人与公共)