Home > Article > Backend Development > Detailed explanation of private attribute inheritance issues in PHP classes
Program running results: PHP 5.3.8 3000 parent's $sal 3000 If the attributes in the parent class are overridden by the subclass. The result is this. Note that the attribute definition in line 5 becomes protected.
program operation result: PHP 5.3.8 5000 parent's $sal 5000 In the first example, the parent class’s private $sal has not been overridden, so the parent class’s method $manager->getSal() calls the parent class’s own private property $sal. At this time, there are two $sal in the memory. In the second column, the protected $sal of the parent class is overridden. The method $manager->getSal() of this parent class calls the overridden $sal. The $sal of the parent class does not exist in the memory at this time. There is only one $sal Let’s look at the third example next Methods overridden in subclasses are valid for the current private class.
Run the results PHP 5.3.8 5000 parent's $sal 3000 In this example, the subclass overrides the getSal() method, so what it calls is the attribute of the subclass. If you comment this line of subclass //private $sal=5000; You will find an error: Notice: Undefined property: Manager::$sal in E:wampwwwoo2-52-5-3.php on line 14 If you comment out the subclass rewrite method on line 12, then the result of echo $manager->getSal(); is the private attribute $sal of the parent class 3000 Open zend debugging status to see what’s going on in the memory. Note that there are two $sal at the bottom. They are 3000 and 5000 respectively.
Program running results: PHP 5.3.8 3000 Change the attribute $sal of the parent class to protected, and the subclass overrides the attribute of the parent class. There is only one $sal in memory.
Program running results: PHP 5.3.8 5000 Attention: PHP5 uses parent:: instead of parent-> to call the parent class. This is enough to show that PHP5 does not want the parent class to be created in memory. PHP5 wants to make inheritance simpler than Java. |