<?php abstract class Number { private $value; abstract public function value(); public function reset() { $this->value = NULL; } } class Integer extends Number { private $value; public function value() { return (int)$this->value; } } $num = new Integer; /* Okay */ $num2 = new Number; /* This will fail */ ?>