A better example would be an Abstract animal class. Why? Because you can extend an animal class to a more specific type of animal.
Now, why would you use an Abstract method. To enforce the concrete implemnation to create that method. In the Animal example you might want to
enforce that all Animal Types (classes extending the Abstract Animal must have a makeNoise() method. Why? Becuase all animals (for sake of example) make noise.
So what about the methods that aren't abstract? You can use them for shared functionality. Things that Animal Types do the same (the same implementation).
So, with that in place, an example:
<?php
abstract class Animal {
public abstract function makeNoise();
public function goToSleep() {
echo "zzz";
}
}
class Cat extends Animal {
public function makeNoise() {
echo "Meow!";
}
}
class Dog extends Animal {
public function makeNoise() {
echo "Woof!";
}
}
$dog = new Dog;
echo " A dog makes noise {$dog->makeNoise()} and now sleeps {$dog->goToSleep()}";