13.5. Herança e Polimorfismo em Java: Hierarquia de Classes

Página 89

13.5 Herança e Polimorfismo em Java: Hierarquia de Classes

A programação orientada a objetos (POO) é um paradigma de desenvolvimento de software que se baseia no conceito de "objetos", que podem conter dados na forma de campos, frequentemente conhecidos como atributos, e código, na forma de procedimentos, frequentemente conhecidos como métodos. Dois dos pilares fundamentais da POO são a herança e o polimorfismo, que permitem a criação de um código mais reutilizável e flexível.

Herança em Java

A herança é um mecanismo que permite que uma nova classe seja criada com base em uma classe existente. A nova classe, conhecida como subclasse ou classe derivada, herda campos e métodos da classe existente, que é chamada de superclasse ou classe base. A herança é uma forma de reutilizar código e estabelecer uma relação de tipo entre classes, criando uma hierarquia.

Em Java, a herança é realizada com a palavra-chave extends. Por exemplo:

class Animal {
    void comer() {
        System.out.println("Este animal come");
    }
}

class Cachorro extends Animal {
    void latir() {
        System.out.println("O cachorro late");
    }
}

Aqui, a classe Cachorro estende a classe Animal, o que significa que Cachorro herda o método comer() de Animal. Isso significa que um objeto de Cachorro pode chamar o método comer(), mesmo que não tenha sido explicitamente definido na classe Cachorro.

Java suporta apenas herança simples, o que significa que uma classe só pode estender uma única classe. No entanto, uma classe pode implementar várias interfaces, que é um tópico diferente e também uma forma de alcançar a polimorfia.

Polimorfismo em Java

Polimorfismo é a capacidade de um método de ter várias formas. Em Java, isso é conseguido principalmente de duas maneiras: polimorfismo de sobrecarga (overloading) e polimorfismo de sobrescrita (overriding).

Polimorfismo de sobrecarga acontece quando dois ou mais métodos na mesma classe têm o mesmo nome, mas parâmetros diferentes. Por exemplo:

class Exemplo {
    void demo(int a) {
        System.out.println("a: " + a);
    }

    void demo(int a, int b) {
        System.out.println("a e b: " + a + "," + b);
    }

    double demo(double a) {
        System.out.println("double a: " + a);
        return a*a;
    }
}

Polimorfismo de sobrescrita, por outro lado, é quando uma subclasse tem um método com a mesma assinatura (nome e parâmetros) que um método na superclasse. Ao sobrescrever um método, a subclasse fornece sua própria implementação. Um exemplo disso seria:

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

class Cachorro extends Animal {
    @Override
    void som() {
        System.out.println("O cachorro late");
    }
}

Com o polimorfismo de sobrescrita, quando um método é invocado, o método da subclasse é chamado, não o da superclasse. O uso da anotação @Override é opcional, mas é uma boa prática de programação, pois ajuda a evitar erros e deixa o código mais legível.

Hierarquia de Classes

A hierarquia de classes é a organização de classes em uma estrutura de árvore onde a classe base é o nó raiz e as subclasses são os nós filhos. Essa estrutura permite a reutilização de código e a gestão da complexidade em sistemas grandes. Em uma hierarquia de classes, uma subclasse herda o estado e o comportamento da superclasse, podendo adicionar novos campos e métodos ou sobrescrever os existentes.

Um exemplo clássico de hierarquia de classes é a classificação biológica. Por exemplo, a classe Mamifero pode estender a classe Animal, e a classe Cachorro pode estender a classe Mamifero. Cada nível da hierarquia agrega características específicas que são herdadas pelos níveis abaixo.

Considerações Finais

A herança e o polimorfismo são conceitos essenciais no desenvolvimento orientado a objetos. Eles permitem a criação de uma estrutura de código que é ao mesmo tempo flexível e fácil de manter. A herança permite estabelecer uma relação "é-um" entre classes, enquanto o polimorfismo permite que objetos de diferentes classes sejam tratados de maneira uniforme. Juntos, eles proporcionam poderosas ferramentas para o desenvolvimento de software em Java e muitas outras linguagens de programação orientadas a objetos.

Entender e aplicar corretamente a herança e o polimorfismo pode ser desafiador para programadores iniciantes, mas é fundamental para a criação de sistemas robustos e escaláveis. Com a prática e o estudo desses conceitos, desenvolvedores podem dominar a arte da programação orientada a objetos e criar aplicações eficientes e de alta qualidade em Java.

Now answer the exercise about the content:

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

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

You missed! Try again.

Next page of the Free Ebook:

9013.6. Herança e Polimorfismo em Java: Construtores e Herança

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