Class Php

Any class that contains one or more abstract methods must itself be declared as abstract. 
An abstract class cannot be instantiated
A class that extends the abstract class must implement the abstract methods of the parent class or itself be declared as abstract. 
abstract class Animal{ 
    function __construct($name='No-name', $breed='unknown', $price = 15) { 
        $this->name = $name; 
        $this->breed = $breed; 
        $this->price = $price; 
    } 
    function setName($name) { 
        $this->name = $name; 
    } 
    function setBreed($breed){ 
        $this->breed = $breed; 
    } 
    function setPrice($price) { 
        $this->price = $price < 0 ? 0 : $price; 
    } 
    function getName() { 
        return $this->name; 
    } 
    function display() { 
        printf("

%s is a %s and costs \$%.2f.

\n", $this->name, $this->breed, $this->price); 
    } 
    public static $type = "animal"; 
    
    public static function fly($direction = 'around') { 
        printf("

Flying %s.

\n", $direction); 
    } 
    abstract public function birdCall(); 
    

class Parrot extends Animal { 
    public function birdCall($singing=FALSE) { 
        $sound = $singing ? "twitter" : "chirp"; 
        printf("

%s says: *%s*

\n", $this->getName(), $sound); 
    }
}
?>