Lets make it a little more clear.
In this case you are assigning a new Tiger to an Animal variable.
This is possible because your Tiger is an Animal.
Problem now is, that an Animal cannot roar. A Tiger can.
The variable a just knows about the things defined in the Animal class.
If the above example would work, what do you suggest
java should do when you type: