Escolar Documentos
Profissional Documentos
Cultura Documentos
Herana
Enquanto programamos em Java, h a necessidade de trabalharmos com vrias classes. Muitas vezes,
classes diferentes tem caractersticas comuns, ento, ao invs de criarmos uma nova classe com todas
essas caractersticas usamos as caractersticas de um objeto ou classe j existente.
Ou seja, herana , 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 esto 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 caractersticas da classe Eletrodomestico,
alm de ter suas prprias caractersticas.
Extends e Super
Para fazermos uma classe herdar as caractersticas de uma outra, usamos a palavra reservada extends logo
aps a definicao do nome da classe. Dessa forma:
class NomeDaClasseASerCriada extends NomeDaClasseASerHerdada
Importante: Java permite que uma classe herde apenas as caractersticas de uma nica classe, ou seja, no
pode haver heranas mltiplas. Porm, permitido heranas em cadeias, por exemplo: se a classe
Mamifero herda a classe Animal, quando fizermos a classe Cachorro herdar a classe Mamifero, a classe
Cachorro tambm herdar as caractersticas da classe Animal.
Como estamos tratando de herana de classes, toda classe tem seu mtodo construtor. Portanto, se
estamos trabalhando com duas classes, temos dois mtodos construtores. Para acessarmos o mtodo
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 mtodos.
Para finalizar, iremos mostrar o exemplo citado mais acima da classe Eletrodomestico e TV. Observe:
http://www.tiexpert.net/ver.php?page=133
Pgina 1
Classe 2: TV
package tiexpert;
public class TV
private int
private int
private int
extends Eletrodomestico {
canal;
volume;
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;
}
//(...)
}
http://www.tiexpert.net/ver.php?page=133
Pgina 2
http://www.tiexpert.net/ver.php?page=133
Pgina 3