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.

Répondez maintenant à l’exercice sur le contenu :

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

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Page suivante de lebook gratuit :

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

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 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte