From the Oracle's website: "A widening reference conversion exists from any reference type S to any reference type T, provided S is a subtype of T. " "Narrowing reference conversions: From any reference type S to any reference type T, provided that S is a proper supertype of T. " 1.) On base of these, with my own words, widening means: reference conversion from the child class to its parent class. Like this: Parent father = new Child(); // if the Child class declared it extends the Parent class. And the narrowing means reference conversion from the parent (super) class to its child class: Child ch = (Child)father; // but it can be do only if the "father" variable is type of Parent, and it have to refers to an object of Child class. Please correct me if i am wrong or confirm if i understood well! 2.) I don't understand why the conversion from child to its parent has the name "widening". Parent class has fewer methods than child class, and it means more narrow possibilities. (The child class extends the parent class!) It would be more logical for me if this conversion would has the name "narrowing". What kind of rational logic is in this naming?
Reference conversions: widening and narrowing