9
Programação
orientada a objetos:
Herança
2005 Pearson Education do Brasil
2
OBJETIVOS
Neste capítulo, você aprenderá:
Como a herança promove a capacidade de
reutilização de software.
As noções de superclasses e subclasses.
Como utilizar a palavra-chave extends para criar
uma classe que herda atributos e comportamentos
de outra classe.
Como utilizar o modificador de acesso protected
para fornecer acesso de métodos de subclasse a
membros de superclasse.
Como acessar membros de superclasse com
super.
Como os construtores são utilizados em
hierarquias de herança.
Introdução
• Capacidade de facilitar a reutilização de código
– Não está reduzido em somente chamar código com funções a
partir de vários programas diferentes
– Aproveitamento de classe e seus métodos
– Diminui a necessidade de escrever novos métodos e classes
– Classes criadas poderão conter os métodos das classes originais,
além de adicionar comportamento específico da nova classe
• Existem dois mecanismos básicos de reuso de classe
em Java: delegação (ou composição) e herança
– Com delegação, usamos uma instância da classe base como
campo na nova classe
– -Com herança criamos a classe nova como uma extensão direta
da classe base
Delegação ou composição
• Primeiro mecanismo de reaproveitamento de
classes
• Podemos criar novas classes se incluirmos uma
instância da classe base como um dos campos da
nova classe, composta de campos específicos
• Escrevemos métodos correspondentes na classe
nova que chamam os da classe base, delegando a
execução dos métodos
• Exemplo prático
– Classe NumberDisplay, criamos a classe ClockDisplay
Herança
Herança (Continuação)
• Hierarquia de classes.
– Superclasse direta:
• Herdada explicitamente (um nível acima na hierarquia).
– Superclasse indireta:
• Herdada de dois ou mais níveis acima na hierarquia.
– Herança única:
• Herda de uma superclasse.
– Herança múltipla:
• Herda de múltiplas superclasses.
– O Java não suporta herança múltipla.
Superclasses e subclasses
• Superclasses e subclasses.
– Freqüentemente, um objeto de uma classe também ‘é
um’ objeto de uma outra classe.
• Exemplo: Em geometria, um retângulo é um quadrilátero.
– A classe Retângulo herda da classe Quadrilátero.
Quadrilátero
– Quadrilátero : superclasse.
– Retângulo : subclasse.
– A superclasse em geral representa um conjunto maior
de objetos do que as subclasses.
• Exemplo:
– Superclasse: Veículo
• Carros, caminhões, barcos, bicicletas…
– Subclasse: Carro
• Subconjunto mais específico e menor de veículos.
Superclasse Subclasses
Aluno AlunoDeGraduação,
AlunoDeGraduação AlunoDePósGraduação
Forma Círculo,
Círculo Triângulo,
Triângulo Retângulo
Financiamento FinanciamentoDeCarro,
FinanciamentoDeCarro
FinanciamentoDeReformaDaCasa,
FinanciamentoDeReformaDaCasa
FinanciamentoDeCasa
Empregado CorpoDocente,
CorpoDocente Funcionários
ContaBancária ContaCorrente
ContaCorrente,
te ContaDePoupança
• Hierarquia de herança:
– Relacionamentos de herança: estrutura de
hierarquia do tipo árvore.
– Cada classe torna-se:
• Superclasse:
– que fornece membros a outras classes.
• OU
• Subclasse:
– que herda membros de outras classes.
Membros protected
• Acesso protected:
protected
– Nível intermediário de proteção entre public e
private.
private
– Membros protected acessíveis pelos:
• membros da superclasse;
• membros da subclasse; e
• membros da classe no mesmo pacote.
– Acesso da subclasse ao membro da superclasse:
• Palavra-chave super e um ponto (.)
Observação de engenharia de
software
Os métodos de uma subclasse não acessam
membros private diretamente de sua
superclasse. Uma subclasse pode alterar o estado
de variáveis de instância private da superclasse
somente por meio de métodos não-private
private
fornecidos na superclasse e herdados pela
subclasse.
(4 de 4)
Construtores em subclasses
• Instanciando objetos de subclasse.
– Cadeia de chamadas ao construtor:
• O construtor da subclasse invoca o construtor da superclasse
implícita ou explicitamente.
• Base da hierarquia de herança:
– O último construtor chamado na cadeia é o construtor
de Object.
Object
– O corpo do construtor de subclasse original termina a
execução por último.
– Exemplo: Hierarquia de CommissionEmployee3
CommissionEmployee3-
BasePlusCommissionEmployee4
BasePlusCommissionEmployee4
• O construtor de CommissionEmployee3
CommissionEmployee3 chamado
em penúltimo lugar (o último é o construtor de
Object).
Object
• O corpo do construtor de CommissionEmployee3
CommissionEmployee3
termina a execução em segundo lugar (o primeiro é o
corpo do construtor de Object).
Object
BasePlusCommissionEmployee5 constructor:
base-
base-salaried commission employee: Mark Sands
social security number: 888-
888-88-
88-8888
gross sales: 8000.00
commission rate: 0.15
base salary: 2000.00
Dica de desempenho