$this->skill = $skill; } public function knows() { echo "I {$this->name} know {$this->skill}" . PHP_EOL; } public function override() { parent::override(); echo "overridden!" . PHP_EOL; } } $foo = new Person("foo", 20); $bar = new Developer("bar", 30, "PHP"); $foo->introduce(); $bar->introduce(); $bar->knows(); $foo->override(); $foo->cannotOverride(); $bar->override(); $bar->cannotOverride(); // abstract class abstract class ANinja { public abstract function kill(Person $someone); protected abstract function isOk(); public function knowledge() { echo "this is a common method, already implemented!" . PHP_EOL; } }