<?php /** * Define MyClass */ class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; function printHello() { echo $this->public."<br>"; echo $this->protected."<br>"; echo $this->private."<br>"; } } $obj = new MyClass(); echo $obj->public."<br>"; // Works //echo $obj->protected."<br>"; // Fatal Error //echo $obj->private."<br>"; // Fatal Error $obj->printHello(); // Shows Public, Protected and Private /** * Define MyClass2 */ class MyClass2 extends MyClass { // We can redeclare the public and protected method, but not private protected $protected = 'Protected2'; function printHello() { echo $this->public."<br>"; echo $this->protected."<br>"; echo $this->private."<br>"; } function parentHello() { parent::printHello(); } } $obj2 = new MyClass2(); echo $obj2->public."<br>"; // Works echo $obj2->private."<br>"; // Undefined //echo $obj2->protected."<br>"; // Fatal Error $obj2->printHello(); // Shows Public, Protected2, Undefined $obj2->parentHello(); ?>
Result:
Public Public Protected Private Public Notice: Undefined property: MyClass2::$private in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\global.php on line 49 Public Protected2 Notice: Undefined property: MyClass2::$private in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\global.php on line 38 Public Protected2 Private