Using Abstract Classes And Methods

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("<p>%s is a %s and costs \$%.2f.</p>\n", $this->name, $this->breed, $this->price);
    }
    public static $type = "animal";
 
    public static function fly($direction = 'around') {
        printf("<p>Flying %s.</p>\n", $direction);
    }
    abstract public function birdCall();
 
} class Parrot extends Animal {
    public function birdCall($singing=FALSE) {
        $sound = $singing ? "twitter" : "chirp";
        printf("<p>%s says: *%s*</p>\n", $this->getName(), $sound);
    }
}
?>

Enjoyed this post? Share it!

 

Leave a comment

Your email address will not be published.