Sei sulla pagina 1di 2

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: Classe 1: Eletrodomestico

01.package tiexpert; 02. 03.public class Eletrodomestico { 04.private boolean ligado; 05.private int voltagem; 06.private int consumo; 07. 08.public Eletrodomestico(boolean ligado, int voltagem, int consumo) { 09.this.ligado = ligado; 10.this.voltagem = voltagem; 11.this.consumo = consumo; 12.} 13.// (...) 14.}
Classe 2: TV

01.package tiexpert; 02. 03.public class TV extends Eletrodomestico { 04.private int canal;

05.private int volume; 06.private int tamanho; 07. 08.public TV(int voltagem, int consumo, int canal, int volume, int tamanh o) { 09.super(false, voltagem, consumo); 10.this.canal = canal; 11.this.volume = volume; 12.this.tamanho = tamanho; 13.} 14.//(...) 15.}
Classe que mostra a instanciao de TV.

01.package tiexpert; 02. 03.public class ExemploHeranca { 04.public static void mostrarCaracteristicas(TV obj) { 05.System.out.print("Esta TV tem as seguintes caractersticas:\n" 06.+ "Tamanho: " + obj.getTamanho() + "\"\n" 07.+ "Voltagem Atual: "+ obj.getVoltagem() + "V\n" 08.+ "Consumo/h: " + obj.getConsumo() + "W\n"); 09.if (obj.isLigado()) { 10.System.out.println("Ligado: Sim\n" 11.+ "Canal: " + obj.getCanal() + "\n" 12.+ "Volume: " + obj.getVolume()+"\n"); 13.} else { 14.System.out.println("Ligado: No\n"); 15.} 16.} 17. 18.public static void main(String args[]) { 19.TV tv1 = new TV(110, 95, 0, 0, 21); 20.TV tv2 = new TV(220, 127, 0, 0, 29); 21.tv2.setLigado(true); 22.tv2.setCanal(3); 23.tv2.setVolume(25); 24.mostrarCaracteristicas(tv1); 25.mostrarCaracteristicas(tv2); 26.} 27.}
O cdigo acima ir mostrar o seguinte resultado: Esta TV tem as seguintes caractersticas: Tamanho: 21" Voltagem Atual: 110V Consumo/h: 95W Ligado: No Esta TV tem as seguintes caractersticas: Tamanho: 29" Voltagem Atual: 220V Consumo/h: 127W Ligado: Sim Canal: 3 Volume: 25

Potrebbero piacerti anche