As you say, overriding.
Overloading isn't polymorphism becase the overloaded methods are
in the same class as each other. You will doubtless have heard the Design
Patterns chaps' mantra
Favour composition over inheritance.
You can use something like this:-
Engine<-----------------Car
^
DieselEngine OttoEngine WankelEngine
As you know, Diesel Otto and Wankel were three German chaps who invented the engines which bear their name, Otto being the 4-stroke petrol (gas) engine and Wankel the rotary petrol (gas) engine. Now you can have different behaviours for each type of engine.
Now, you can have such silly code for any different kind of engine, in which case you are using polymorphism at the Car level, but it is actually polymorphism at the Engine level.
You can have the same for class MotorBicycle; motor cycles use Otto engines, or two-stroke engines. I am not sure whether you actually call it polymorphism in these circumstance.
CR
I tried editing the original post and bits went missing, so I have tried to reconstruct what I meant to say originally.
[ June 02, 2006: Message edited by: Campbell Ritchie ]