13.1. Herança e Polimorfismo em Java: Conceito de Herança

Página 85

13.1 Herança e Polimorfismo em Java: Conceito de Herança

A herança é um dos pilares fundamentais da programação orientada a objetos (POO), e o Java, sendo uma linguagem que adota esse paradigma, oferece recursos robustos para sua implementação. Herança é um mecanismo que permite que uma nova classe derive propriedades e comportamentos de uma classe existente. A classe que é herdada é chamada de classe base, superclasse ou classe pai, enquanto a classe que herda é conhecida como classe derivada, subclasse ou classe filha.

Na prática, a herança possibilita a reutilização de código e a criação de uma hierarquia de classes relacionadas. Isso não só economiza tempo e esforço no desenvolvimento de software, mas também ajuda a manter o código organizado, mais fácil de manter e expandir.

Como a Herança Funciona em Java

Em Java, a herança é realizada com a palavra-chave extends. Quando uma classe é definida como a extensão de outra, ela herda todos os campos não privados (atributos) e métodos da classe pai. Isso significa que a classe filha pode usar esses membros como se fossem seus.

Exemplo:

class Vehicle {
    protected String brand = "Ford"; // Atributo da classe Vehicle
    public void honk() {             // Método da classe Vehicle
        System.out.println("Tuut, tuut!");
    }
}

class Car extends Vehicle {
    private String modelName = "Mustang"; // Atributo da classe Car
    public static void main(String[] args) {
        // Cria um objeto da classe Car
        Car myCar = new Car();

        // Chama o método da classe Vehicle
        myCar.honk();

        // Acessa o atributo da classe Vehicle
        System.out.println(myCar.brand + " " + myCar.modelName);
    }
}

Neste exemplo, Car é uma subclasse de Vehicle. A classe Car herda o método honk e o atributo brand da classe Vehicle, e também define seu próprio atributo, modelName.

Sobrescrita de Métodos

Uma subclasse em Java pode sobrescrever os métodos da superclasse. Isso é feito quando a subclasse precisa de uma implementação específica para um método herdado. A sobrescrita é uma forma de polimorfismo, que será discutido mais adiante.

Exemplo:

class Animal {
    public void sound() {
        System.out.println("O animal faz um som");
    }
}

class Pig extends Animal {
    public void sound() {
        System.out.println("O porco diz: wee wee");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal(); // Cria um objeto da classe Animal
        Animal myPig = new Pig();       // Cria um objeto da classe Pig

        myAnimal.sound();
        myPig.sound();
    }
}

Neste exemplo, a classe Pig sobrescreve o método sound da classe Animal. Quando o método é chamado no objeto myPig, a implementação da classe Pig é usada, não a da classe Animal.

Uso do super

A palavra-chave super em Java é usada dentro de métodos de subclasses para fazer referência a membros (métodos ou atributos) da superclasse. Isso é útil especialmente quando estamos sobrescrevendo métodos, mas queremos ainda assim acessar a implementação da superclasse.

Exemplo:

class Animal {
    public void sound() {
        System.out.println("O animal faz um som");
    }
}

class Pig extends Animal {
    public void sound() {
        super.sound(); // Chama o método da superclasse
        System.out.println("O porco diz: wee wee");
    }
}

Aqui, a classe Pig chama o método sound da superclasse Animal antes de executar seu próprio código.

O Polimorfismo em Java

O polimorfismo, outro pilar da POO, permite que objetos de diferentes classes sejam tratados como objetos de uma superclasse comum. Isso é particularmente poderoso em combinação com a herança, pois permite que um único método ou classe opere em objetos de diferentes classes.

Polimorfismo em Java é, em sua maioria, realizado através de sobrecarga e sobrescrita de métodos. A sobrecarga ocorre quando dois ou mais métodos na mesma classe têm o mesmo nome, mas parâmetros diferentes. A sobrescrita, como vimos, é quando uma subclasse fornece uma implementação específica para um método que já é fornecido por sua superclasse.

Exemplo de polimorfismo:

class Animal {
    public void sound() {
        System.out.println("O animal faz um som");
    }
}

class Pig extends Animal {
    public void sound() {
        System.out.println("O porco diz: wee wee");
    }
}

class Dog extends Animal {
    public void sound() {
        System.out.println("O cachorro diz: bow wow");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal();
        Animal myPig = new Pig();
        Animal myDog = new Dog();

        myAnimal.sound();
        myPig.sound();
        myDog.sound();
    }
}

Neste exemplo, a classe Main cria objetos de diferentes tipos, mas todos são tratados como instâncias da classe Animal. Isso demonstra polimorfismo, pois o método sound se comporta de maneira diferente dependendo do tipo de objeto que o invoca.

Conclusão

A herança e o polimorfismo são conceitos chave na programação orientada a objetos e são extensivamente utilizados em Java para criar código reutilizável e sistemas extensíveis. Ao compreender e aplicar esses conceitos, desenvolvedores podem escrever código mais limpo, mais modular e mais fácil de manter.

Espera-se que este curso sobre Java forneça uma compreensão sólida desses conceitos, permitindo que você os aplique em cenários do mundo real e construa aplicações robustas e eficientes.

Now answer the exercise about the content:

Qual das seguintes afirmações sobre herança em Java está correta?

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

You missed! Try again.

Next page of the Free Ebook:

8613.2. Herança e Polimorfismo em Java: Palavra-chave 'extends'

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or 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