13.10. Inheritance and Polymorphism in Java: Object Casting

Inheritance and polymorphism are two of the main pillars of object-oriented programming (OOP) and are fundamental to understanding and effectively using the Java language. Let's explore these concepts and how object casting fits into this context.

Inheritance in Java

Inheritance is a mechanism by which a class can inherit fields and methods from another class. In Java, this is done using the extends keyword. The class it inherits from is called a subclass or derived class, while the class from which it inherits is called a superclass or base class.


class Animal {
    void eat() {
        System.out.println("This animal eats");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("The dog barks");
    }
}

In the example above, Dog is a subclass of Animal. This means that Dog inherits the eat() method from Animal, in addition to having its own bark() method. .

Polymorphism in Java

Polymorphism is the ability to treat subclass objects as objects of their superclass. In other words, an object of a subclass can be referenced as if it were an object of its superclass. This allows methods or variables of more generic types to refer to instances of more specific types, providing flexibility to the code.


Animal myAnimal = new Dog();
myAnimal.eat(); // Call the eat method of the Animal class

Here, myAnimal is a variable of type Animal, but it is referencing an object of type Dog. This is possible thanks to polymorphism.

Object Casting

Object casting is the process of converting an instance of one class to an instance of another class in the inheritance hierarchy. In Java, casting can be explicit (upcasting) or implicit (downcasting).

Upcasting

Upcasting is the casting of a subclass to a superclass, and is done automatically by Java. It is safe because the subclass has all the methods and fields of the superclass.


Dog dog = new Dog();
Animal animal = dog; // Implicit upcasting

Downcasting

Downcasting is the casting of a superclass to a subclass. This is not done automatically as it can lead to runtime errors if the object is not actually an instance of the subclass. Therefore, it must be done explicitly and usually after checking the type with the instanceof operator.


Animal animal = new Dog();
if (animal instanceof Dog) {
    Dog dog = (Dog) animal; // Explicit downcasting
    dog.bark();
}

In the example above, the downcasting is done after verifying that animal is in fact an instance of Dog. After downcasting, we can call specific methods from the Dog class, such as bark().

Importance of Casting

Casting is important because it allows design flexibility. For example, you might have a list of Animal objects that contain instances of Dog, Cat, or any other subclass of Animal< /code>. Casting allows you to treat each object according to its specific class when necessary.

Final Considerations

Inheritance and polymorphism are concepts that go hand in hand in object-oriented programming. They allow the creation of a flexible and reusable class structure. Object casting, in turn, is a tool that allows you to manipulate this structure in a powerful way, allowing the same code to work with different types of objects in a safe and controlled way.

In summary, understanding inheritance and polymorphism is essential for any Java developer. Object casting is an advanced technique that, when used correctly, can make your code more flexible and powerful. Always remember to check the object type before downcasting to avoid runtime exceptions and ensure the security of your code.

With practice and understanding of these concepts, you will be well equipped to create robust and maintainable applications in Java, taking full advantage of the OOP capabilities that the language offers.

Now answer the exercise about the content:

Which of the following statements about inheritance and polymorphism in Java is correct?

You are right! Congratulations, now go to the next page

You missed! Try again.

Article image Inheritance and Polymorphism in Java: 'instanceof' Method

Next page of the Free Ebook:

95Inheritance and Polymorphism in Java: 'instanceof' Method

5 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text