Professional Documents
Culture Documents
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