Obj2 IS a class2, it isn't a class 1 and the compiler doesn't know how to make it one.
It's like saying:
volcano vesuvius = new volcano();
dog rover = vesuvius AS dog;
All the compiler is saying is:
"What the $!@#$?
How do you expect me to turn a volcano into dog?
At least give me a hint.
Do you want me to ignore the fact that it isn't really a dog and just throw a stick and wait around and see if it fetches it?
Or do you have some magic method of speeding up evolution that you haven't told me about that will turn a volcano into a dog on the spot?"
What the compiler will be happy to do is:
class mountain { }
class volcano : public mountain { }
volcano vesuvius = new volcano();
mountain mt_vesuvius = vesuvius AS mountain;
You've already said that volcano's are a specialized form of mountains.
So the compiler doesn't have a fit if you want to call a volcano a mountain -- after all it already is one.
Or if you had told the compiler a method of converting one class to the other, then it might have done it for you.