SlideShare uma empresa Scribd logo
Herança em POO
Herança
● Herança é um princípio de orientação a
objetos, que permite que classes compartilhem
atributos e métodos, através de "heranças".
● Ela é usada na intenção de reaproveitar código
ou comportamento generalizado ou
especializar operações ou atributos.
● O conceito de herança de várias classes é
conhecido como herança múltipla.
Herança
● Herança Múltipla:
– Algumas linguagens de programação suportam a
herança múltipla, que permite que uma subclasse
tenha capacidade de herdar características de duas
ou mais superclasses. Assim, uma única classe
pode agrupar atributos e métodos de várias
classes.
– Não é o caso de Java, que não permite essa
funcionalidade.
Exemplo de Herança
Herança
● Na herança, as características comuns a um
grupo de classes são reunidas em uma
superclasse ("classe mãe") e, a partir dessa,
outras classes podem ser especificadas. Cada
subclasse ("classe filha") apresenta as
características (métodos, atributos, ...)
especificadas pela superclasse e, além disso,
pode especificar o que for definido como sua
particularidade.
Herança
●
A herança tem a vantagem de
capturar o que é comum e o isolar
daquilo que é diferente, além de ser
vista diretamente no código OO.
●
Porém, ela gera um forte
acoplamento, pois uma pequena
mudança numa superclasse afeta
todas as suas subclasses.
Herança de atributos
Extends
● Para fazermos uma classe herdar as
características de uma outra, usamos a palavra
reservada extends logo após a definição do
nome da classe.
Acessar a superclasse
● Para poder acessar os atributos da superclasse
é necessário utilizar a palavra reservada This.
Instância
Super
● 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.
Herança de métodos
● Observe o seguinte sistema
Herança de métodos
Herança de métodos
● No Java, quando herdamos um método,
podemos alterar seu comportamento. Podemos
reescrever (reescrever, sobrescrever, override)
este método
Herança de métodos
● Há como deixar explícito no seu código que determinador método é
a reescrita de um método da sua classe mãe. Fazemos isso
colocando @Override em cima do método.
● Isso é chamado anotação.
● Existem diversas anotações e cada uma vai ter um efeito diferente
sobre seu código.
Herança de métodos
● Repare que, por questões de compatibilidade,
isso não é obrigatório. Mas caso um método
esteja anotado com @Override, ele
necessariamente precisa estar reescrevendo um
método da classe mãe.
Invocando o método reescrito
● Depois de reescrito, não podemos mais
chamar o método antigo que fora herdado da
classe mãe: realmente alteramos o seu
comportamento. Mas podemos invocá-lo no
caso de estarmos dentro da classe.
● Imagine que para calcular a bonificação de um
Gerente devemos fazer igual ao cálculo de um
Funcionario porém adicionando R$ 1000.
Poderíamos fazer assim:
Invocando o método reescrito
Invocando o método reescrito
● Aqui teríamos um problema: o dia que o
getBonificacao do Funcionario mudar,
precisaremos mudar o método do Gerente para
acompanhar a nova bonificação. Para evitar
isso, o getBonificacao do Gerente pode chamar
o do Funcionario utilizando a palavra chave
super.
Invocando o método reescrito
Invocando o método reescrito
● Essa invocação vai procurar o método com o nome
getBonificacao de uma super classe de Gerente. No
caso ele logo vai encontrar esse método em Funcionario.
● Essa é uma prática comum, pois muitos casos o método
reescrito geralmente faz "algo a mais" que o método da
classe mãe. Chamar ou não o método de cima é uma
decisão sua e depende do seu problema. Algumas vezes
não faz sentido invocar o método que reescrevemos.
Override
● Ele é uma forma de garantir que você está
sobrescrevendo um método e não criando um
novo.
● EX:
Override
● Você sobrescreveu corretamente o método imprime() e
o código acima funcionará sem maiores problemas.
● Entretanto um belo dia você resolveu mudar o nome do
método na SuperClasse de imprime() para imprimir().
● Resultado:
Exercício
● Implemente o restante das classes:

Mais conteúdo relacionado

Semelhante a Aula Herança

Heranca reescrita e_polimorfismo
Heranca reescrita e_polimorfismoHeranca reescrita e_polimorfismo
Heranca reescrita e_polimorfismo
Pedro Neto
 
Herança.pptx
Herança.pptxHerança.pptx
Herança.pptx
GiselleSantos60
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
Cleyton Ferrari
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
Daniel Brandão
 
Apresentação sobre Herança - Orientação a Objetos
Apresentação sobre Herança - Orientação a ObjetosApresentação sobre Herança - Orientação a Objetos
Apresentação sobre Herança - Orientação a Objetos
mauroladeiafilho
 
Orientação a objetos php
Orientação a objetos   phpOrientação a objetos   php
Orientação a objetos php
secomp2011
 
Poo padadigmas
Poo padadigmasPoo padadigmas
Poo padadigmas
rafa nonato
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
Daniel Brandão
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
Gardênia Santana
 
Aula 3.ppt
Aula 3.pptAula 3.ppt
Orientação a objetos com PHP
Orientação a objetos com PHPOrientação a objetos com PHP
Orientação a objetos com PHP
Leonardo Soares
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
Sérgio Souza Costa
 
Refactoring
RefactoringRefactoring
Refactoring
Bruno Lui
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
Regis Magalhães
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: Classes
Inael Rodrigues
 
Atividade 3
Atividade 3Atividade 3
Atividade 3
David Willian
 
Java Básico :: Orientação a objetos
Java Básico :: Orientação a objetosJava Básico :: Orientação a objetos
Java Básico :: Orientação a objetos
Wesley R. Bezerra
 
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptxAULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AurelcioOliveira
 
10 heranca
10   heranca10   heranca
10 heranca
Artur Todeschini
 
Baixo acoplamento e alta coesão no paradigma Orientado a Objetos
Baixo acoplamento e alta coesão no paradigma Orientado a ObjetosBaixo acoplamento e alta coesão no paradigma Orientado a Objetos
Baixo acoplamento e alta coesão no paradigma Orientado a Objetos
Paulo Vitor
 

Semelhante a Aula Herança (20)

Heranca reescrita e_polimorfismo
Heranca reescrita e_polimorfismoHeranca reescrita e_polimorfismo
Heranca reescrita e_polimorfismo
 
Herança.pptx
Herança.pptxHerança.pptx
Herança.pptx
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Apresentação sobre Herança - Orientação a Objetos
Apresentação sobre Herança - Orientação a ObjetosApresentação sobre Herança - Orientação a Objetos
Apresentação sobre Herança - Orientação a Objetos
 
Orientação a objetos php
Orientação a objetos   phpOrientação a objetos   php
Orientação a objetos php
 
Poo padadigmas
Poo padadigmasPoo padadigmas
Poo padadigmas
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
Aula 3.ppt
Aula 3.pptAula 3.ppt
Aula 3.ppt
 
Orientação a objetos com PHP
Orientação a objetos com PHPOrientação a objetos com PHP
Orientação a objetos com PHP
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 
Refactoring
RefactoringRefactoring
Refactoring
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
 
Livro Código limpo: Classes
Livro Código limpo:  ClassesLivro Código limpo:  Classes
Livro Código limpo: Classes
 
Atividade 3
Atividade 3Atividade 3
Atividade 3
 
Java Básico :: Orientação a objetos
Java Básico :: Orientação a objetosJava Básico :: Orientação a objetos
Java Básico :: Orientação a objetos
 
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptxAULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
 
10 heranca
10   heranca10   heranca
10 heranca
 
Baixo acoplamento e alta coesão no paradigma Orientado a Objetos
Baixo acoplamento e alta coesão no paradigma Orientado a ObjetosBaixo acoplamento e alta coesão no paradigma Orientado a Objetos
Baixo acoplamento e alta coesão no paradigma Orientado a Objetos
 

Mais de Jorge Ávila Miranda

Aula16 - Jquery
Aula16 - JqueryAula16 - Jquery
Aula16 - Jquery
Jorge Ávila Miranda
 
Aula15 - Array PHP
Aula15 - Array PHPAula15 - Array PHP
Aula15 - Array PHP
Jorge Ávila Miranda
 
Aula13 - Estrutura de repetição (for e while) - PHP
Aula13 - Estrutura de repetição (for e while) - PHPAula13 - Estrutura de repetição (for e while) - PHP
Aula13 - Estrutura de repetição (for e while) - PHP
Jorge Ávila Miranda
 
Aula14 - Funções em PHP
Aula14 - Funções em PHPAula14 - Funções em PHP
Aula14 - Funções em PHP
Jorge Ávila Miranda
 
Aula05 - Poojava
Aula05 - PoojavaAula05 - Poojava
Aula05 - Poojava
Jorge Ávila Miranda
 
Aula12- PHP
Aula12- PHPAula12- PHP
Aula11 - PHP
Aula11 - PHPAula11 - PHP
Aula11 - PHP
Jorge Ávila Miranda
 
Aula10 -PHP
Aula10 -PHPAula10 -PHP
Aula09 - Java Script
Aula09 - Java ScriptAula09 - Java Script
Aula09 - Java Script
Jorge Ávila Miranda
 
Aula08 - Java Script
Aula08 - Java ScriptAula08 - Java Script
Aula08 - Java Script
Jorge Ávila Miranda
 
Aula07 - JavaScript
Aula07 - JavaScriptAula07 - JavaScript
Aula07 - JavaScript
Jorge Ávila Miranda
 
Aula04-POOJAVA
Aula04-POOJAVAAula04-POOJAVA
Aula04-POOJAVA
Jorge Ávila Miranda
 
Aula06 - JavaScript
Aula06 - JavaScriptAula06 - JavaScript
Aula06 - JavaScript
Jorge Ávila Miranda
 
Aula05-JavaScript
Aula05-JavaScriptAula05-JavaScript
Aula05-JavaScript
Jorge Ávila Miranda
 
Aula04-JavaScript
Aula04-JavaScriptAula04-JavaScript
Aula04-JavaScript
Jorge Ávila Miranda
 
Aula03 - JavaScript
Aula03 - JavaScriptAula03 - JavaScript
Aula03 - JavaScript
Jorge Ávila Miranda
 
Aula02 - JavaScript
Aula02 - JavaScriptAula02 - JavaScript
Aula02 - JavaScript
Jorge Ávila Miranda
 
Aula01-JavaScript
Aula01-JavaScriptAula01-JavaScript
Aula01-JavaScript
Jorge Ávila Miranda
 
Aula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de ComputadoresAula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de Computadores
Jorge Ávila Miranda
 
Aula06 - Arquitetura e Manutenção de Computadores
Aula06 - Arquitetura e Manutenção de ComputadoresAula06 - Arquitetura e Manutenção de Computadores
Aula06 - Arquitetura e Manutenção de Computadores
Jorge Ávila Miranda
 

Mais de Jorge Ávila Miranda (20)

Aula16 - Jquery
Aula16 - JqueryAula16 - Jquery
Aula16 - Jquery
 
Aula15 - Array PHP
Aula15 - Array PHPAula15 - Array PHP
Aula15 - Array PHP
 
Aula13 - Estrutura de repetição (for e while) - PHP
Aula13 - Estrutura de repetição (for e while) - PHPAula13 - Estrutura de repetição (for e while) - PHP
Aula13 - Estrutura de repetição (for e while) - PHP
 
Aula14 - Funções em PHP
Aula14 - Funções em PHPAula14 - Funções em PHP
Aula14 - Funções em PHP
 
Aula05 - Poojava
Aula05 - PoojavaAula05 - Poojava
Aula05 - Poojava
 
Aula12- PHP
Aula12- PHPAula12- PHP
Aula12- PHP
 
Aula11 - PHP
Aula11 - PHPAula11 - PHP
Aula11 - PHP
 
Aula10 -PHP
Aula10 -PHPAula10 -PHP
Aula10 -PHP
 
Aula09 - Java Script
Aula09 - Java ScriptAula09 - Java Script
Aula09 - Java Script
 
Aula08 - Java Script
Aula08 - Java ScriptAula08 - Java Script
Aula08 - Java Script
 
Aula07 - JavaScript
Aula07 - JavaScriptAula07 - JavaScript
Aula07 - JavaScript
 
Aula04-POOJAVA
Aula04-POOJAVAAula04-POOJAVA
Aula04-POOJAVA
 
Aula06 - JavaScript
Aula06 - JavaScriptAula06 - JavaScript
Aula06 - JavaScript
 
Aula05-JavaScript
Aula05-JavaScriptAula05-JavaScript
Aula05-JavaScript
 
Aula04-JavaScript
Aula04-JavaScriptAula04-JavaScript
Aula04-JavaScript
 
Aula03 - JavaScript
Aula03 - JavaScriptAula03 - JavaScript
Aula03 - JavaScript
 
Aula02 - JavaScript
Aula02 - JavaScriptAula02 - JavaScript
Aula02 - JavaScript
 
Aula01-JavaScript
Aula01-JavaScriptAula01-JavaScript
Aula01-JavaScript
 
Aula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de ComputadoresAula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de Computadores
 
Aula06 - Arquitetura e Manutenção de Computadores
Aula06 - Arquitetura e Manutenção de ComputadoresAula06 - Arquitetura e Manutenção de Computadores
Aula06 - Arquitetura e Manutenção de Computadores
 

Último

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
2m Assessoria
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 

Último (10)

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 

Aula Herança

  • 2. Herança ● Herança é um princípio de orientação a objetos, que permite que classes compartilhem atributos e métodos, através de "heranças". ● Ela é usada na intenção de reaproveitar código ou comportamento generalizado ou especializar operações ou atributos. ● O conceito de herança de várias classes é conhecido como herança múltipla.
  • 3. Herança ● Herança Múltipla: – Algumas linguagens de programação suportam a herança múltipla, que permite que uma subclasse tenha capacidade de herdar características de duas ou mais superclasses. Assim, uma única classe pode agrupar atributos e métodos de várias classes. – Não é o caso de Java, que não permite essa funcionalidade.
  • 5. Herança ● Na herança, as características comuns a um grupo de classes são reunidas em uma superclasse ("classe mãe") e, a partir dessa, outras classes podem ser especificadas. Cada subclasse ("classe filha") apresenta as características (métodos, atributos, ...) especificadas pela superclasse e, além disso, pode especificar o que for definido como sua particularidade.
  • 6. Herança ● A herança tem a vantagem de capturar o que é comum e o isolar daquilo que é diferente, além de ser vista diretamente no código OO. ● Porém, ela gera um forte acoplamento, pois uma pequena mudança numa superclasse afeta todas as suas subclasses.
  • 8. Extends ● Para fazermos uma classe herdar as características de uma outra, usamos a palavra reservada extends logo após a definição do nome da classe.
  • 9. Acessar a superclasse ● Para poder acessar os atributos da superclasse é necessário utilizar a palavra reservada This.
  • 11. Super ● 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.
  • 12. Herança de métodos ● Observe o seguinte sistema
  • 14. Herança de métodos ● No Java, quando herdamos um método, podemos alterar seu comportamento. Podemos reescrever (reescrever, sobrescrever, override) este método
  • 15. Herança de métodos ● Há como deixar explícito no seu código que determinador método é a reescrita de um método da sua classe mãe. Fazemos isso colocando @Override em cima do método. ● Isso é chamado anotação. ● Existem diversas anotações e cada uma vai ter um efeito diferente sobre seu código.
  • 16. Herança de métodos ● Repare que, por questões de compatibilidade, isso não é obrigatório. Mas caso um método esteja anotado com @Override, ele necessariamente precisa estar reescrevendo um método da classe mãe.
  • 17. Invocando o método reescrito ● Depois de reescrito, não podemos mais chamar o método antigo que fora herdado da classe mãe: realmente alteramos o seu comportamento. Mas podemos invocá-lo no caso de estarmos dentro da classe. ● Imagine que para calcular a bonificação de um Gerente devemos fazer igual ao cálculo de um Funcionario porém adicionando R$ 1000. Poderíamos fazer assim:
  • 18. Invocando o método reescrito
  • 19. Invocando o método reescrito ● Aqui teríamos um problema: o dia que o getBonificacao do Funcionario mudar, precisaremos mudar o método do Gerente para acompanhar a nova bonificação. Para evitar isso, o getBonificacao do Gerente pode chamar o do Funcionario utilizando a palavra chave super.
  • 20. Invocando o método reescrito
  • 21. Invocando o método reescrito ● Essa invocação vai procurar o método com o nome getBonificacao de uma super classe de Gerente. No caso ele logo vai encontrar esse método em Funcionario. ● Essa é uma prática comum, pois muitos casos o método reescrito geralmente faz "algo a mais" que o método da classe mãe. Chamar ou não o método de cima é uma decisão sua e depende do seu problema. Algumas vezes não faz sentido invocar o método que reescrevemos.
  • 22. Override ● Ele é uma forma de garantir que você está sobrescrevendo um método e não criando um novo. ● EX:
  • 23. Override ● Você sobrescreveu corretamente o método imprime() e o código acima funcionará sem maiores problemas. ● Entretanto um belo dia você resolveu mudar o nome do método na SuperClasse de imprime() para imprimir(). ● Resultado:
  • 24. Exercício ● Implemente o restante das classes: