Vous êtes sur la page 1sur 3
www.tiexpert.net – O ponto de encontro do estudante de TI

www.tiexpert.net – O ponto de encontro do estudante de TI

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.

www.tiexpert.net – O ponto de encontro do estudante de TI Herança Enquanto programamos em Java, há

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:

http://www.tiexpert.net/ver.php?page=133

Página 1

www.tiexpert.net – O ponto de encontro do estudante de TI

www.tiexpert.net – O ponto de encontro do estudante de TI

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);

}

}

http://www.tiexpert.net/ver.php?page=133

Página 2

www.tiexpert.net – O ponto de encontro do estudante de TI

www.tiexpert.net – O ponto de encontro do estudante de TI

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

Autor: Denys William Xavier Este artigo está sob Licença Creative Commons Para ver uma cópia desta

Autor: Denys William Xavier Este artigo está sob Licença Creative Commons Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.

http://www.tiexpert.net/ver.php?page=133

Página 3