In Java, an Object can have a runtime type (which is what it was created as) and a casted type (the type you have casted it to be).
I\'m wondering what
The type of the variable a is A. There's no changing that, since it's a reference. It happens to refer to an object of type B. While you're referring to that B object through an A reference you can only treat it as though it were of type A.
You can later cast it to its more specific type
B b = (B)a;
and use the B methods on that object.