Hi,
A bit of googling helped here. This is what I understood, hope it will help.
Widening : This refers only to primitive data types. Check out this link
http://www.java2s.com/Tutorial/Java/0040__Data-Type/TheWideningConversion.htm
or in short Widening is permitted in the following cases :
The
widening conversion is permitted in the following cases:
byte to short, int, long, float, or double
Short to int, long, float, or double
char to int, long, float, or double
int to long, float, or double
long to float or double
float to double
So we have widening as opposed to narrowing, the latter requires an explicit cast.
Upcasting and Downcasting - Refers to using References in inheritance structures.
Just check the diagram from :
http://forum.codecall.net/java-tutorials/20719-upcasting-downcasting.html
The example you have, to the best of my knowledge is definately an upcast