2017-10-14 113 views
-6
<?php 
    class Test 
    { 
     private $a = 10; 
     public $b ='abc'; 



} 
class Test2 extends Test 
{ 

    function __construct() 
    { 

     echo $this->a; 
     echo $this->a = 20; // wh 
    } 

} 
$test3 = new Test2(); 

回答

3
echo $this->a; 

呼应类属性a的价值。此属性是未定义,因为类的属性a私人,因此在类Test2中不可用。所以,产品a创建于Test2

echo $this->a = 20; // wh 

做下一:分配20到a属性(其上一行创建)和回波分配是20的结果。

解决办法:

class Test 
{ 
     // protected property is avalilable in child classes 
     protected $a = 10; 
     public $b ='abc'; 
} 

class Test2 extends Test 
{ 
    function __construct() 
    { 
     echo $this->a; 
     $this->a = 20; 
     echo $this->a; 
    } 
} 
$test3 = new Test2(); // outputs 10 20 
+1

的Bleh。我接近投票错误的原因。我应该欺骗了这个https://stackoverflow.com/questions/4361553/what-is-the-difference-between-public-private-and-protected – Machavity

+0

感谢您的帮助 –

-1

你应该改变

private $a = 10; 

到:

protected $a = 10; 
+0

当然,但问题是“为什么” ?你可以从[u_mulder的回答](https://stackoverflow.com/a/46745074/1415724)了解一两件事。 –

+0

谢谢walid ajaj –

相关问题