2012-02-14 5 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-> numberにアクセスします。結果は期待されます。あなたがパブリックとプライベートをオーバーライドすることはない。もちろん

class B extends A 
{ 
    public $number; 

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

;)

関連する問題