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.