Possibly move this later after Inheritance is finished
Car
and Motorcycle
are subclasses of MotorVehicle
. If you instantiate a Car
or a Motorcycle
with new
, you can use that object anywhere you can use a MotorVehicle
, because cars are motor
vehicles. Similarly you can use a Motorcycle
anywhere you can use a MotorVehicle
. This use of a subclass object in place
of a superclass object is the beginning of polymorphism.
I'll say more about polymorphism later.
The converse is not true. Although all cars are motor vehicles, not all motor vehicles are cars. Some are motorcycles. Therefore if a method expects a Car
object you shouldn't give it a MotorVehicle
object instead.
Note that I said you shouldn't give a method that expects a Car
a MotorVehicle
. I didn't say you couldn't. Objects can be cast into their subclasses. This is useful when using data structures like Vector
s that only handle generic objects. It's up to the programmer to keep track of what kind of object is stored in a Vector
, and to use it accordingly.
The proper choice of classes and subclasses is a skill learned primarily through experience. There are often different ways to define classes.
toString()
as example of polymorphism