14
HERANÇA PEDRO FELIPE DE LIMA [email protected] JAMERSON SANTOS [email protected]r JOEL LUIS [email protected] PROF. DOUGLAS FRARI [email protected]

Herança

Embed Size (px)

Citation preview

Page 1: Herança

HERANÇAPEDRO FELIPE DE LIMA

[email protected]

JAMERSON SANTOS

[email protected]

JOEL [email protected]

PROF. DOUGLAS FRARI

[email protected]

Page 2: Herança

HERANÇA

Mecanismo pelo qual elementos mais específicos (subclasses) incorporam estrutura e comportamento de elementos mais gerais (superclasses).

// SuperClass.javapublic class SuperClass {...}// SubClass.javapublic class SubClass extends SuperClass {...}

Herança é a capacidade de reutilizar código pela especialização de soluções genéricas já existentes.

Herança é na verdade, uma classe derivada de outra classe. Processo no qual uma classe herda características de outra.

Page 3: Herança

Simplificando...

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

HERANÇA

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.

Page 4: Herança

EXTENDS E SUPER

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.

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().

Page 5: Herança

NA PRÁTICA

01. package heranca;

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. }

Classe 1: Eletrodomestico

Page 6: Herança

NA PRÁTICA

01. package heranca;

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 tamanho) {

09.         super(false, voltagem, consumo);

10.         this.canal = canal;

11.         this.volume = volume;

12.        this.tamanho = tamanho;

13.     }

14. }

Classe 2: TV

Page 7: Herança

01. package heranca;

02. 

03. public class ExemploHeranca {

04.     public static void mostrarCaracteristicas(TV obj) {

05.         System.out.print("Esta TV tem as seguintes características:\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: Não\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. }

Classe que mostra a instanciação de TV.

Page 8: Herança

HERANÇA

Resultado do código:

Esta TV tem as seguintes características:Tamanho: 21"Voltagem Atual: 110VConsumo/h: 95WLigado: Não

Esta TV tem as seguintes características:Tamanho: 29"Voltagem Atual: 220VConsumo/h: 127WLigado: SimCanal: 3Volume: 25

Page 9: Herança

EXERCÍCIO

Crie um código para representar Liquidificadores.

Sendo o mesmo tendo o controle de Velocidade Analógico e Digital.

Criação de uma classe base genérica LiquidificadorGenerico contendo as características comuns destes aparelhos e duas derivadas LiquidificadorAnalogico e LiquidificadorDigital que implementem as características particulares.

Page 10: Herança

EXERCÍCIO

Page 11: Herança

Classes: Liquidificador

// LiquidificadorGenerico.javapublic class LiquidificadorGenerico {// atributosprotected int velocidade;protected int velocidadeMaxima;// construtorespublic LiquidificadorGenerico() {velocidade = 0;velocidadeMaxima = 2;}public LiquidificadorGenerico(int v) {this()ajustarVelocidadeMaxima(v);}// metodosprotected void ajustarVelocidadeMaxima(int v) {if (v>0)velocidadeMaxima = v;}protected void ajustarVelocidade(int v) {if (v>=0 && v<=velocidadeMaxima)velocidade = v;}public int obterVelocidadeMaxima() {return velocidadeMaxima;}}public int obterVelocidade() {return velocidade;}}

Page 12: Herança

Classe LiquidificadorAnalogico

// LiquidificadorAnalogico.javapublic class LiquidificadorAnalogico extendsLiquidificadorGenerico {// construtorpublic LiquidificadorAnalogico() {velocidade = 0;}// metodospublic void aumentarVelocidade() {ajustarVelocidade(velocidade + 1);}public void diminuirVelocidade() {diminuirVelocidade(velocidade - 1);}}

Page 13: Herança

Classe LiquidificadorDigital

// LiquidificadorDigital.javapublic class LiquidificadorDigital extendsLiquidificadorGenerico{// construtorpublic LiquidificadorDigital() {velocidade = 0;}// metodopublic void trocarVelocidade(int v) {// aciona método protegido para troca de velocidadeajustarVelocidade(v);}}

Page 14: Herança

Tiexperthttp://www.tiexpert.net/programacao/java/heranca.php

Wikipediahttp://pt.wikipedia.org/wiki/Herança_(programação)

Imastershttp://imasters.uol.com.br/artigo/3444/java/heranca_em_java/

DCA - Department of Computer Engineering and Industrial Automation

http://www.dca.fee.unicamp.br/cursos/PooJava/heranca/

PUCRS | Faculdade de Informáticahttp://www.inf.pucrs.br/~flash/lapro2/lapro2_heranca.pdf

Núcleo de Educação a Distância - Universidade São Francisco

Introdução ao Java, Apostila. - Prof. Peter Jandl Junior - 1999

REFERÊNCIAS