Linguagem de Programação II / Java - Herança
Linguagem de Programação II
Herança
Prof. Alessandro Borges
Linguagem de Programação II / Java - Herança
Tópicos
Reutilização de classes
Delegação
Herança
Definição
Superclasse e Subclasse
A palavra reservada ‘extends’
Método construtor com herança
Definição do método ‘super’
Hierarquia de classes
Herança múltipla
2
Linguagem de Programação II / Java - Herança
Reutilização de classes
Aproveita códigos já testados e comprovados.
Reduz necessidade de escrever novos métodos e
classes
Economiza o trabalho do programador
Reduz possibilidade de erros
Mecanismos de reutilização de classes em Java
Delegação (Composição)
Herança
4
Linguagem de Programação II / Java - Herança
Delegação (Composição)
Uma nova classe estende uma classe base incluindo uma
instância da classe base como atributo na nova classe.
A nova classe é composta de campos específicos e de uma
instância da classe base.
As classes originais ficam, assim, contidas na nova classe
Métodos correspondentes são criados na nova classe para
viabilizar o uso dos métodos da classe base, delegando,
assim, a execução desses métodos.
6
Linguagem de Programação II / Java - Herança
Delegação (Composição)
Exemplo:
Classe base Data
Classe base Hora
Nova Classe DataHora
7
Linguagem de Programação II / Java - Herança
Delegação (Composição)
Exemplo:
Classe base Data
Classe base Hora
Nova Classe DataHora
8
Atributos:
- dia (byte)
- mês (byte)
- ano (short)
Métodos:
- Construtor
- get‘s e set’s
- validaData (boolean)
Linguagem de Programação II / Java - Herança
Delegação (Composição)
Exemplo:
Classe base Data
Classe base Hora
Nova Classe DataHora
9
Atributos:
- hora (byte)
- minuto (byte)
- segundo (short)
Métodos:
- Construtor
- get‘s e set’s
- validaHora (boolean)
Linguagem de Programação II / Java - Herança
Delegação (Composição)
Exemplo:
Classe base Data
Classe base Hora
Nova Classe DataHora
10
Atributos:
- estaData (Data)
- estaHora (Hora)
Métodos:
- Construtor(es)
- setDataHora
- validaDataHora (boolean)
- toString (String)
Linguagem de Programação II / Java - Herança
Delegação (Composição)
Exemplo:
Classe base Data
Classe base Hora
Nova Classe DataHora
11
Atributos:
- estaData (Data)
- estaHora (Hora)
Métodos:
- Construtor
- setDataHora
- validaDataHora (boolean)
- toString (String)
Composição
Delegação
Linguagem de Programação II / Java - Herança
HerançaO que é
Mais uma forma de evitar a repetição de código.
Permite criar uma classe usando outra como base,
reutilizando atributos e métodos não privados e
acrescentando diferenças específicas
É um relacionamento entre um elemento genérico e um
mais específico
Relações “é um tipo de” entre classes
Também chamada de Generalização / Especialização
O objeto da classe filha “herda” todas as características
da classe pai.
13
Linguagem de Programação II / Java - Herança
HerançaSuperclasse e Subclasse
Relacionamento entre classes onde:
A partir de uma classe existente (superclasse) é possível criar
uma nova classe (subclasse);
Superclasse e Subclasse :
Superclasse (ou classe base ou classe ancestral) : é a classe existente que é herdada por uma outra classe.
Subclasse (ou classe derivada ou classe herdeira): consiste na
classe que herda todos os métodos e atributos de uma classe existente;
Classes finais (final) não podem ser herdadas
14
Linguagem de Programação II / Java - Herança
HerançaSuperclasse e Subclasse
Dizemos que: “Uma classe (subclasse) estende (herda)
outra classe (superclasse)”.
Implementado através da palavra reservada extends
Uma subclasse pode adicionar Métodos e Atributos
particulares, mas não pode remover Métodos e
Atributos da superclasse, contendo, então, todos eles.
15
Linguagem de Programação II / Java - Herança
HerançaSuperclasse e Subclasse
Se a superclasse tem atributos privados, então somente
poderão ser acessados por métodos da superclasse.
A herança permite que os métodos públicos da
superclasse sejam usados na subclasse para acessar os
atributos da superclasse.
Os métodos próprios da subclasse, porém, não podem
acessar diretamente os atributos privados da
superclasse.
16
Linguagem de Programação II / Java - Herança
Semântica: “é um”
Exemplos:
Aluno “é uma” Pessoa
Professor “é uma” Pessoa
Na Herança as classes mais genéricas são
divididas em subclasses mais específicas.
Herança17
Aluno Professor
Pessoa
Superclasse
SubclasseSubclasse
Linguagem de Programação II / Java - Herança
Herança em Java18
Implementando a classe Pessoa:
1. public class Pessoa{
2. String nome;
3. int idade;
4. public void Falar(){
5. System.out.println("Falar alto.");
6. }
7. }
Implementando a classe Aluno que herda da classe Pessoa:1. public class Aluno extends Pessoa{
2. String matricula;
3. public void Matricular(){
4. System.out.println("Aluno Matriculado.");
5. }
6. }
Linguagem de Programação II / Java - Herança
Método Construtor usando Herança
em Java
19
Implementando a classe Pessoa:
1. public class Pessoa{
2. String nome;
3. int idade;
4. public Pessoa(String nome, int idade){
5. this.nome = nome;
6. this.idade = idade;
7. }
8. }
Implementando a classe Aluno que herda da classe Pessoa:1. public class Aluno extends Pessoa{
2. String matricula;
3. public Aluno(String nome, int idade, String matricula){
4. super(nome, idade);
5. this.matricula = matricula;
6. }
7. }
O construtor da subclasse recebe,
como argumentos, os dados para
criar a superclasse mais os dados
específicos da subclasse
Linguagem de Programação II / Java - Herança
Herança
Superclasse e Subclasse
Construtores são chamados simplesmente pela palavra
super seguida dos argumentos.
Métodos são chamados pela palavra super seguida de
um ponto e do nome do método.
Construtores de superclasses só podem ser chamados
de dentro de construtores de subclasses e na primeira
linha de código do construtor da subclasse.
Somente métodos e construtores da superclasse
imediata podem ser chamados usando super.
Não existem construções super.super
20
Linguagem de Programação II / Java - Herança
Herança – Hierarquia de classes
Pessoa
FísicaPessoa
Jurídica
Pessoa
Aluno Professor Escola
Superclasse
Subclasse e
Superclasse Subclasse e
Superclasse
SubclasseSubclasse Subclasse
21
Linguagem de Programação II / Java - Herança
Herança – Hierarquia de classes
Superclasse direta:
Herdada explicitamente (um nível acima na hierarquia).
Superclasse indireta (herança em cadeia):
Herdada de dois ou mais níveis acima na hierarquia.
Herança única:
Herda apenas uma superclasse.
Herança múltipla:
Herda múltiplas superclasses.
22
Linguagem de Programação II / Java - Herança
Herança Múltipla
Uma classe possui mais de uma superclasse.
Exemplos de Herança Múltipla:
Exemplo 1 Exemplo 2
Estudante Trabalhador
Monitor
Carro Brinquedo
Carro de
Brinquedo
Superclasses
Subclasses
23
Linguagem de Programação II / Java - Herança
Herança Múltipla em Java
Java não suporta herança múltipla.
Herança Múltipla em Java ocorre a partir:
1. Da extensão de outra classe (superclasse); e
2. Do uso de interfaces.
Assinatura de uma classe Java com herança múltipla:
[modificadores] class [nome_classe] extends[nome_superclasse] implements [nome_interface1], [nome_interface2], ... , [nome_interfaceN]
24
Linguagem de Programação II / Java - Herança
Linguagem de Programação II
Herança
Prof. Alessandro Borges
Linguagem de Programação II / Java - Herança
Exercício26
Escreva um programa em Java que implemente a
Herança a partir das classes abaixo conforme
mostrado no diagrama de classes da UML.
Veiculo
- marca: String- velocidade: Double
+ Veiculo(marca: String, velocidade: Double)+ getMarca(): String+ setMarca(String marca) : Void
Moto
- tamanho: String+ Moto(marca: String, velocidade: Double, tamanho: String)+ getTamanho(): String+ setTamanho(String tamanho) : Void
Carro
- numPortas: int
+ Carro(marca: String, velocidade: Double, numPortas: int)+ getNumPortas(): int+ setNumPortas(int numPortas) : Void
Top Related