2012-02-14 61 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; 
    } 
} 

當然,你絕不會覆蓋一個私人與公共)