Typecasting an object from parent class to child
You can try this:
Base obj= new Derived();
Derived obj2= (Derived)obj;
Hope this will help.
Basically you can't cast an instance of a superclass to a subclass because the instance of a subclass is not yet known. Upcasting is a sure way to prevent this exception to happen because we are now dealing polymorphism to our code.
You must instance a subclass first:
Dog dog = new Dog;
We can hide the methods of the class Dog not found to its parent class Animal by casting it to its superclass:
Animal animal = (Animal) dog;
Then you can downcast this back to your subclass Dog because the instance of its subclass is already known:
Dog anotherDog = (Dog) animal;
Once you create an object, you can't change its type. That's why you can't cast an Animal to a Dog.
However, if you create an object of a sub-class, you can keep a reference to it in a variable of the super-class type, and later you can cast it to the sub-class type.
This will work :
Animal a = new Dog ();
Dog d = (Dog) a;
In the Android example, you have a layout resource that looks like this :
<EditText
android:id="@+id/edit_message"
..."/>
This definition will cause Android to create an instance of EditText
, and therefore you can cast the view returned by findViewById
to EditText
. You can't cast it to anything else that isn't a super-type of EditText
.