Just as an example, you get into interesting situations like this in frameworks. My definition of framework usually involves something about "inversion of control" so instead of controlling the sequence of every thing that happens in your program you turn some control over to the framework. (If you wrote the framework, too, you might be turning control over to yourself, but the ideas still work.)
Let's say a framework tells us when new mail messages arrive by calling method a(). The framework author provides a base class with an empty a() method. When you extend the class, you override a() to do something useful with the message. Maybe you have one extended class that shows messages on screen and another extended class that puts messages into a file. And if another extende class doesn't override a() then nothing happens at all, which might be exactly what you want some times.
One bit left out ... how do you plug your extended classes into the framework? You'd probably "register" them with something like:
Or maybe the framework only uses one at a time:
So, an abstract framework class might have lots of empty methods. You can override them or not to make interesting things happen. Zat help?
[ June 02, 2004: Message edited by: Stan James ]