"Eric Jacoboni" <jaco / teaser.fr> wrote
in message news:864rt4ruy1.fsf / titine.fr.eu.org...

> A Manager "is a" Employee, reverse is not true (that's the classical
> assertion...)
>
> In Ruby, it's legal to assign an Manager to an Employee with
>
> anEmployee = aManager
>
> anEmployee is now a Manager...
> Is there a way to avoid this behaviour or is it a "feature" ?

anEmployee is just a variable name that appears to resemble a class name.

In Ruby you can assign any object to be the value of anEmployee, the name
is just a convention that documents the *intended* type rather than an
*enforced* type. Ruby does not enforce the types of values a variable can
refer to.

anInteger = "Nope. It's a string"
aString = 54321
anEmployee = aString
aManager = FrobKnob.new("Not a manager")

....and so on.

--
Patrick Logan
mailto:patrickdlogan / home.com