class Parrot extends Bird
{
public function Talk()
{
echo 'Talk';
}
}
A Bird can’t necessarily “talk” so you’d assume that a Parrot can’t be substituted with a Bird. But this isn’t the Liskov principle.
The point is a Parrot should act like a Bird in all ways, so that someone who has a plan for dealing with birds in general won’t be surprised by a Parrot they run across.
If the Parrot happens to be able to talk as well, it doesn’t matter, because their plan doesn’t involve asking birds to talk.
For example, perhaps they just call $bird->fly() on every Bird they get - the ability of a Parrot to talk won’t disrupt that activity, so their algorithm still works. But if you invent a sort of bird that can’t fly (an Ostrich, say), then you’ve violated the principle, and their general bird-handling algorithm no longer works on all sorts of birds.