I am actually curious about this as well. I wouldn't fight hard on either side of this argument, but it seems to be that a square is a special case of a rectangle. Whether or not one would need a special square class or not might be questionable, but why is this wrong?
In object orientation, if you derive a class from a base, you say that your derived class "is-a" base. The classic example is that you have a base class "animal" and you can have derived classes "dog" and "cat", perhaps further deriving "German shepherd" from "dog". So, a German shepherd "is-a" dog, and a dog "is-a" animal. Sounds trivial. But what "is-a" implies is that a German shepherd can do everything a generic dog can, but maybe more. So perhaps "dog" has a method "bark" (assuming that all dogs can bark) but the "German shepherd" has a method "herd sheep" which the generic "dog" class hasn't got (assuming German shepherds can herd sheep and not just any dog can). Of course, "animal" has no method "bark" since not all animals can bark.
The crucial part is that you can pass a derived class to a function expecting a base class, since the derived class can do everything the base class can (and perhaps more). So, it's perfectly fine to pass a "German shepherd" to a function taking a "dog" expecting to call its "bark" method, because German shepherds can bark just fine.
Now suppose I have a function taking a "rectangle", expecting that you can set its width and height to the golden ratio. Someone calls you with a "square" (since a square "is-a" rectangle, right?), but a square can't do everything a rectangle can! Namely, you can't set its width and height to different values.
A lot of people learning OO get this wrong (often in other disguises, such as circles and ellipses); I just didn't expect it to be so blatantly in a book.