Programação
 › Algoritmo  › C/C++  › Java
Web
 › HTML/XHTML  › JavaScript  › PHP
Sistema Operacional
 › Comandos de DOS  › Windows  › Linux  › Mac/BSD
Office
 › Word / Writer  › Excel / Calc
Áreas do Site
 › Download  › Fórum  › Blog
Recomendamos
Computadores e Informática em Lisboa
TI Expert » Programação » Java » Herança de Classes

Herança

Enquanto programamos em Java, há a necessidade de trabalharmos com várias classes. Muitas vezes, classes diferentes tem características comuns, então, ao invés de criarmos uma nova classe com todas essas características usamos as características de um objeto ou classe já existente.

Ou seja, herança é, na verdade, uma classe derivada de outra classe.

Para simplificar de uma forma mais direta, vejamos:

Vamos imaginar que exista uma classe chamada Eletrodomestico, e nela estão definidos os seguintes atributos: ligado (boolean), voltagem (int) e consumo (int).

Se levarmos em conta a classe TV que estamos usando de exemplo até agora, podemos dizer que TV deriva de Eletrodomestico. Ou seja, a classe TV possui todas as características da classe Eletrodomestico, além de ter suas próprias características.

Extends e Super

Para fazermos uma classe herdar as características de uma outra, usamos a palavra reservada extends logo após a definicação do nome da classe. Dessa forma:

class NomeDaClasseASerCriada extends NomeDaClasseASerHerdada

Importante: Java permite que uma classe herde apenas as características de uma única classe, ou seja, não pode haver heranças múltiplas. Porém, é permitido heranças em cadeias, por exemplo: se a classe Mamifero herda a classe Animal, quando fizermos a classe Cachorro herdar a classe Mamifero, a classe Cachorro também herdará as características da classe Animal.

Herança encadeada

Como estamos tratando de herança de classes, toda classe tem seu método construtor. Portanto, se estamos trabalhando com duas classes, temos dois métodos construtores. Para acessarmos o método construtor da classe que está sendo herdada usamos o super().

Podemos usar o super para qualquer construtor da classe pai, pois o Java consegue diferenciar os construtores por causa da sobrecarga de métodos.

Para finalizar, iremos mostrar o exemplo citado mais acima da classe Eletrodomestico e TV. Observe:

Classe 1: Eletrodomestico

package tiexpert;

public class Eletrodomestico {
    private boolean ligado;
    private int voltagem;
    private int consumo;

    public Eletrodomestico(boolean ligado, int voltagem, int consumo) {
        this.ligado = ligado;
        this.voltagem = voltagem;
        this.consumo = consumo;
    }
    // (...)
}

Classe 2: TV

package tiexpert;

public class TV extends Eletrodomestico {
    private int canal;
    private int volume;
    private int tamanho;

    public TV(int voltagem, int consumo, int canal, int volume, int tamanho) {
        super(false, voltagem, consumo);
        this.canal = canal;
        this.volume = volume;
        this.tamanho = tamanho;
    }
    //(...)
}

Classe que mostra a instanciação de TV.

package tiexpert;

public class ExemploHeranca {
    public static void mostrarCaracteristicas(TV obj) {
        System.out.print("Esta TV tem as seguintes características:\n"
             + "Tamanho: " + obj.getTamanho() + "\"\n"
             + "Voltagem Atual: "+ obj.getVoltagem() + "V\n"
             + "Consumo/h: " + obj.getConsumo() + "W\n");
        if (obj.isLigado()) {
            System.out.println("Ligado: Sim\n"
                 + "Canal: " + obj.getCanal() + "\n"
                 + "Volume: " + obj.getVolume()+"\n");
        } else {
            System.out.println("Ligado: Não\n");
        }
    }

    public static void main(String args[]) {
        TV tv1 = new TV(110, 95, 0, 0, 21);
        TV tv2 = new TV(220, 127, 0, 0, 29);
        tv2.setLigado(true);
        tv2.setCanal(3);
        tv2.setVolume(25);
        mostrarCaracteristicas(tv1);
        mostrarCaracteristicas(tv2);
    }
}
Faça o Download deste Código

O código acima irá mostrar o seguinte resultado:

Esta TV tem as seguintes características:
Tamanho: 21"
Voltagem Atual: 110V
Consumo/h: 95W
Ligado: Não

Esta TV tem as seguintes características:
Tamanho: 29"
Voltagem Atual: 220V
Consumo/h: 127W
Ligado: Sim
Canal: 3
Volume: 25

Creative Commons License
Autor: Denys William Xavier
Este artigo está sob Licença Creative Commons.

Faça o download da versão em PDF Indique nosso site Gostou?
Indique nosso site!
Este artigo foi
lido 105001 vezes
Bookmark e Compartilhe

Páginas Relacionadas

Enquete
O Google Chrome OS irá desbancar o Microsoft Windows 7?
» ProgramaçãoAlgorítmo | C/C++ | Java

» WebHTML/XHTML | JavaScript | PHP

» Sistema OperacionalComandos de DOS | Windows | Linux | Mac/BSD

» OfficeWord/Wirter | Excel/Calc

» Áreas do SiteDownloads | Fórum | Blog