Programação Orientada a Objetos



       Composição e Herança
          Reutilização de Classes



          Ludimila Monjardim Casagrande
                      2012
Reutilização

     Uma das características mais importantes das
        linguagens orientadas a objetos é a capacidade de
        facilitar a reutilização de código – o aproveitamento
        de classes e métodos que já estejam
        implementados e cujo funcionamento já tenha sido
        testado e comprovado.
     Reutilização de código:
           diminui o esforço de implementação;
           facilita a manutenção;
           minimiza a possibilidade de erros.

Composição e Herança       ©2012 Ludimila Monjardim Casagrande   2
Mecanismos de Reutilização

     Existem dois mecanismos básicos de
        reutilização de classes:
           Composição (ou Delegação)
           Herança
     Com composição, usamos uma instância de
        uma classe como campo em outra classe.
     Com herança, criamos uma classe nova como
        uma extensão direta da classe base.


Composição e Herança   ©2012 Ludimila Monjardim Casagrande   3
Composição ou Delegação

     Uma possível forma de reutilizar métodos de
        uma classe base em outra classe é incluindo
        uma instância da classe base como um dos
        atributos da nova classe.

     Para que os métodos da classe base sejam
        executados, escrevemos métodos na classe
        nova que chamam os da classe base,
        delegando dessa forma a execução dos
        métodos.

Composição e Herança   ©2012 Ludimila Monjardim Casagrande   4
Exemplo
  public class DataHora { // declaração da classe
       private Data estaData;     // referência a uma instância da classe Data
       private Hora estaHora;     // referência a uma instância da classe Hora
       public DataHora(int dia, int mes, int ano, int hora, int minuto, int segundo) {
          estaData = new Data(dia, mes, ano);
          estaHora = new Hora(hora, minuto, segundo);
       }
       public DataHora( int dia, int mes, int ano) {
          estaData = new Data(dia, mes, ano);
          estaHora = new Hora();
       }
       public String toString() {
          return estaData + " " + estaHora;
       }
  } // fim da classe DataHora
Composição e Herança            ©2012 Ludimila Monjardim Casagrande                      5
Exemplo




Composição e Herança   ©2012 Ludimila Monjardim Casagrande   6
Exemplo




Composição e Herança   ©2012 Ludimila Monjardim Casagrande   7
Exemplo

     A classe DataHora reutiliza as classes Data e
        Hora através de composição ou delegação.

     A data e hora são representadas por instâncias
        das respectivas classes que estão embutidas na
        classe DataHora, e toda a interação entre esta
        classe e as embutidas é feita por meio da
        chamada de métodos das classes embutidas.




Composição e Herança   ©2012 Ludimila Monjardim Casagrande   8
Exemplo

     O construtor para a classe DataHora, que
        recebe argumentos para inicializar todos os
        campos que esta classe indiretamente contém,
        chama os construtores das classes Data e Hora
        para inicializar os campos das instâncias destas
        classes.




Composição e Herança   ©2012 Ludimila Monjardim Casagrande   9
Composição e Modificadores de Acesso

     Classes que contêm instâncias de outras
        classes estão submetidas às restrições
        impostas pelos modificadores de acesso
        utilizados na classe embutida mais as restrições
        impostas pela própria classe.

     Exemplo:
           Atributos estaData e estaHora na classe
            DataHora.


Composição e Herança     ©2012 Ludimila Monjardim Casagrande   10
Considerações sobre a Composição

     Reutilização de classes via delegação é útil
        quando a classe que reutiliza instâncias de
        outras é composta pelas outras classes.

     No entanto, esse mecanismo não é o mais
        natural quando se trata da criação de classes
        que são especializações de um dado conceito.




Composição e Herança   ©2012 Ludimila Monjardim Casagrande   11
Herança

     O outro mecanismo para reutilização de código
        é a herança, que permite que uma nova classe
        seja criada por meio da extensão de uma já
        existente.

     Na nova classe são implementadas eventuais
        diferenças de comportamento em relação à
        classe base, são adicionados atributos e
        métodos e são reutilizados atributos e métodos
        da classe base.

Composição e Herança   ©2012 Ludimila Monjardim Casagrande   12
Herança

     A herança deve ser utilizada quando se deseja
        especializar uma classe e quando existe a
        relação de “é um” entre a subclasse e a
        superclasse.
     Exemplos:
           Aluno é uma Pessoa
           Professor é uma Pessoa




Composição e Herança    ©2012 Ludimila Monjardim Casagrande   13
Exemplo

     Se estivermos implementando um sistema para
        universidade, podemos pensar em classes
        como Aluno, Professor, Coordenador, Diretor,
        Secretária, etc.

     Todas essas classes são pessoas. Portanto,
        podemos criá-las por meio do processo de
        herança, especializando a classe Pessoa.




Composição e Herança   ©2012 Ludimila Monjardim Casagrande   14
Exemplo




Composição e Herança   ©2012 Ludimila Monjardim Casagrande   15
Exemplo

   A sintaxe para criação de herança em Java é
      simples. Basicamente, dizemos que uma classe
      herda ou “estende” outra, através da palavra-chave
      extends. Assim, definimos a classe Aluno da
      seguinte forma:
         public class Aluno extends Pessoa




Composição e Herança   ©2012 Ludimila Monjardim Casagrande   16
Exemplo




Composição e Herança   ©2012 Ludimila Monjardim Casagrande   17
Considerações sobre o Exemplo

     Desse modo, a classe Aluno foi criada a partir da classe
        Pessoa. Todos os atributos e métodos da classe Pessoa
        foram herdados pela classe Aluno.
     Dizemos que a classe Pessoa é a classe base, ou
        superclasse, ou genérica, ou classe pai, e a classe
        Aluno é a classe especializada, ou subclasse, ou classe
        filha.
     Pode ser usado o relacionamento estabelecido pela
        herança, pelo fato de podermos dizer que um Aluno é
        uma Pessoa.



Composição e Herança     ©2012 Ludimila Monjardim Casagrande      18
Considerações sobre o Exemplo

     Como o objeto da classe Aluno herda os atributos
        /métodos da classe Pessoa, ao criarmos um objeto
        aluno da classe Aluno, o código abaixo seria correto:
          Aluno aluno = new Aluno();
          aluno.setNome(“João”);
          aluno.setCpf(“123456789”);
          ...
          aluno.setMatricula(1234);
     No código podemos ver que os métodos que
        inicialmente foram definidos na classe Pessoa podem
        ser chamados para um objeto da classe Aluno.



Composição e Herança         ©2012 Ludimila Monjardim Casagrande   19
Chamada de Construtor da Classe Pai

    Considerando o exemplo anterior, nas linhas 7 a 12 temos:



    Sabemos que public Aluno... define um construtor para a classe
       Aluno.
    Na linha 9, o uso da palavra-chave super significa uma chamada
       ao construtor da classe Pai (Pessoa). Assim, a classe Aluno
       repassa para a classe Pai os dados que são herdados (nome, cpf,
       rg, endereço), e armazena na própria classe seus dados
       (matrícula e curso).



Composição e Herança      ©2012 Ludimila Monjardim Casagrande         20
Dicas sobre Construtores
   O primeiro comando executado por todo construtor é uma
      chamada para o construtor default da sua superclasse, a
      menos que isso seja explicitamente modificado na sua
      implementação.
   Se você desejar fazer uma chamada para qualquer outro
      construtor, isso deve ser feito logo na primeira linha. Como
      no exemplo abaixo:




Composição e Herança     ©2012 Ludimila Monjardim Casagrande         21
Dicas sobre Construtores
   Um construtor pode chamar outro construtor da própria
      classe (overloaded) pelo uso da palavra-chave this ou
      qualquer construtor de uma das suas superclasses pela
      palavra-chave super. As palavras-chave devem ser
      sucedidas pelos argumentos do construtor de interesse.
   Se você cria um construtor sem a chamada ao this ou
      super, o compilador irá inserir automaticamente uma
      chamada ao super() sem argumentos na primeira linha.
   Não é possível chamar um método de instância (métodos
      não estático) ou acessar uma variável de instância antes
      que o construtor seja executado.


Composição e Herança    ©2012 Ludimila Monjardim Casagrande      22
Leitura Recomendada

     Capítulo 8 – Páginas 113 a 138 do Livro-Texto.
        Introdução à Programação Orientada a Objetos
        Usando Java.




Composição e Herança   ©2012 Ludimila Monjardim Casagrande   23

Mais conteúdo relacionado

PDF
POO - 01 - Introdução ao Paradigma Orientado a Objetos
PDF
POO - 16 - Polimorfismo
PDF
POO - 17 - Interfaces
PDF
POO - 11 - Prática de Herança
PDF
Aula 02 - Principios da Orientação a Objetos (POO)
PDF
POO - 18 - Sobrecarga e Sobreposição de Métodos
PDF
Programação Orientada a Objetos
PDF
Aula 1 - Introdução a POO
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 16 - Polimorfismo
POO - 17 - Interfaces
POO - 11 - Prática de Herança
Aula 02 - Principios da Orientação a Objetos (POO)
POO - 18 - Sobrecarga e Sobreposição de Métodos
Programação Orientada a Objetos
Aula 1 - Introdução a POO

Mais procurados (20)

PDF
POO - 06 - Encapsulamento
PDF
HERANÇA - Programação Orientada a Objetos JAVA
PPTX
JAVA - Herança
PPT
Aula javascript
PDF
Aula 2 - POO: Fundamentos da linguagem Java
PDF
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
PDF
POO - Aula 09 - Herança
PPTX
Programação Orientado a Objetos
PDF
Programação Orientação a Objetos - Herança
PDF
Programação Orientada á Objeto - Paradigmas e Implementação
PPTX
Java: Heranca e polimorfismo
PDF
Encapsulamento em Orientação a Objetos
PDF
Revisão Sobre Programação Orientada a Objetos com Java
PDF
Java orientação a objetos (associacao, composicao, agregacao)
PPT
Conceitos básicos de programação orientada a objetos
PDF
Fundamentos e princípios do projeto orientado a objetos
PPT
Java modulo 01 - Introdução
PPTX
Programação orientada a objetos
PDF
Java script - funções
POO - 06 - Encapsulamento
HERANÇA - Programação Orientada a Objetos JAVA
JAVA - Herança
Aula javascript
Aula 2 - POO: Fundamentos da linguagem Java
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - Aula 09 - Herança
Programação Orientado a Objetos
Programação Orientação a Objetos - Herança
Programação Orientada á Objeto - Paradigmas e Implementação
Java: Heranca e polimorfismo
Encapsulamento em Orientação a Objetos
Revisão Sobre Programação Orientada a Objetos com Java
Java orientação a objetos (associacao, composicao, agregacao)
Conceitos básicos de programação orientada a objetos
Fundamentos e princípios do projeto orientado a objetos
Java modulo 01 - Introdução
Programação orientada a objetos
Java script - funções
Anúncio

Destaque (14)

PDF
Programação orientada a objetos: herança
PPTX
Introdução ao matlab
PDF
Curso Java #05 - Heranca, Polimorfismo e Classe abstratas
PPT
Classes Internas
PDF
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
ODP
Java 09 Heranca Reescrita Polimorfismo
PPT
Encapsulamento em oo
PPTX
Análise Orientada a Objetos com UML
PPTX
Introdução ao Matlab
PPT
Análise Orientada a Objetos - Objetos E Classes
PDF
Linguagem Java - Conceitos e Técnicas
PDF
Exercícios de relacionamento 2012
PDF
Banco de dados exercícios resolvidos
Programação orientada a objetos: herança
Introdução ao matlab
Curso Java #05 - Heranca, Polimorfismo e Classe abstratas
Classes Internas
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java 09 Heranca Reescrita Polimorfismo
Encapsulamento em oo
Análise Orientada a Objetos com UML
Introdução ao Matlab
Análise Orientada a Objetos - Objetos E Classes
Linguagem Java - Conceitos e Técnicas
Exercícios de relacionamento 2012
Banco de dados exercícios resolvidos
Anúncio

Semelhante a POO - 10 - Herança (20)

PPT
http://www.dm.ufscar.br/~waldeck/curso/java/
PDF
Reuso com Herança e Composição
PDF
Reuso com Herança e Composição
PDF
Linguagem de Programação - Composição e Herança
PPTX
Herança.pptx
PDF
Programacao II Aula 7 Heranca-Diagrama Classe [Autosaved].pdf
PPTX
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
PDF
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
PPTX
Estudos Technocorp
PPT
Java aula 2
PPTX
Introdução à Metaprogramação com Java Reflection API
ODP
Paradigma Orientado a Objeto
PDF
Classes internas
PPTX
Linguagem de programação implementação de classes
PPTX
Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16
PPSX
Java & orientação a objetos
PPT
Curso Java Basico
PPT
Classes e Objectos JAVA
PPTX
Especialização e generalização em java
http://www.dm.ufscar.br/~waldeck/curso/java/
Reuso com Herança e Composição
Reuso com Herança e Composição
Linguagem de Programação - Composição e Herança
Herança.pptx
Programacao II Aula 7 Heranca-Diagrama Classe [Autosaved].pdf
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
Estudos Technocorp
Java aula 2
Introdução à Metaprogramação com Java Reflection API
Paradigma Orientado a Objeto
Classes internas
Linguagem de programação implementação de classes
Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16
Java & orientação a objetos
Curso Java Basico
Classes e Objectos JAVA
Especialização e generalização em java

Mais de Ludimila Monjardim Casagrande (17)

PDF
Gerenciamento Ágil de Projetos com Scrum
PDF
POO - 23 - Coleções da API do Java
PDF
POO - 22 - Tratamento de Exceções em Java
PDF
POO - 21 - Java e Banco de Dados
PDF
POO - 20 - Wrapper Classes
PDF
POO - 19 - Elementos Estáticos
PDF
POO - 15 - Passagem de Argumentos
PDF
POO - 14 - Vetores
PDF
POO - 13 - Arrays em Java
PDF
POO - 12 - A Classe Object
PDF
POO - 09 - Entradas e Saídas em Java
PDF
POO - 08 - Prática de Encapsulamento
PDF
POO - 07 - Operadores do Java
PDF
POO - 05 - Ambiente de Desenvolvimento
PDF
POO - 04 - Variávies em Java
PDF
POO - 24 - Classes Básicas do Java - Datas
PDF
POO - 03 - Alocação de Memória em Java
Gerenciamento Ágil de Projetos com Scrum
POO - 23 - Coleções da API do Java
POO - 22 - Tratamento de Exceções em Java
POO - 21 - Java e Banco de Dados
POO - 20 - Wrapper Classes
POO - 19 - Elementos Estáticos
POO - 15 - Passagem de Argumentos
POO - 14 - Vetores
POO - 13 - Arrays em Java
POO - 12 - A Classe Object
POO - 09 - Entradas e Saídas em Java
POO - 08 - Prática de Encapsulamento
POO - 07 - Operadores do Java
POO - 05 - Ambiente de Desenvolvimento
POO - 04 - Variávies em Java
POO - 24 - Classes Básicas do Java - Datas
POO - 03 - Alocação de Memória em Java

Último (20)

PDF
POO - Aula 05 - Herança - Generalização e Especialização.pdf
PPT
inteligencia_artificial REPRESENTAÇÃO DO CONHECECIMENTO
PDF
instalacoes eletricas para industria apressentacao basicas
PPTX
AULA 1.pptx GESTÃO DE OPERAÇÕES INDUSTRIAIS
PDF
POO - Aula 05 - Herança - Generalização e Especialização.pdf
PDF
wp-sn-advanced-high-availability-architecture (pt-br).pdf
PDF
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
PPTX
Modelo para Qualificação de Mestrado - Tecnologia da Informação
PDF
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
PDF
Arquitetura de Software slides sommerville
PPTX
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
PDF
Personalização de tópicos adicionais no SAP Extended Warehouse Management, EW...
PPT
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
PPTX
Introdução a Computação em Nuvem-parte2-T2
PPTX
Importacao_Ordem_Customizacao_SAP_S4HANA.pptx
PPTX
Politicas-de-Seguranca-Privacidade-e-Cookies.pptx
DOCX
20250828_Perfis Profissionais em ServiceNow Um Guia Detalhado.docx
PDF
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
PDF
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
PDF
POO - Aula 03 - Membros Estáticos e Construtores.pdf
POO - Aula 05 - Herança - Generalização e Especialização.pdf
inteligencia_artificial REPRESENTAÇÃO DO CONHECECIMENTO
instalacoes eletricas para industria apressentacao basicas
AULA 1.pptx GESTÃO DE OPERAÇÕES INDUSTRIAIS
POO - Aula 05 - Herança - Generalização e Especialização.pdf
wp-sn-advanced-high-availability-architecture (pt-br).pdf
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
Modelo para Qualificação de Mestrado - Tecnologia da Informação
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
Arquitetura de Software slides sommerville
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
Personalização de tópicos adicionais no SAP Extended Warehouse Management, EW...
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
Introdução a Computação em Nuvem-parte2-T2
Importacao_Ordem_Customizacao_SAP_S4HANA.pptx
Politicas-de-Seguranca-Privacidade-e-Cookies.pptx
20250828_Perfis Profissionais em ServiceNow Um Guia Detalhado.docx
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
POO - Aula 03 - Membros Estáticos e Construtores.pdf

POO - 10 - Herança

  • 1. Programação Orientada a Objetos Composição e Herança Reutilização de Classes Ludimila Monjardim Casagrande 2012
  • 2. Reutilização  Uma das características mais importantes das linguagens orientadas a objetos é a capacidade de facilitar a reutilização de código – o aproveitamento de classes e métodos que já estejam implementados e cujo funcionamento já tenha sido testado e comprovado.  Reutilização de código:  diminui o esforço de implementação;  facilita a manutenção;  minimiza a possibilidade de erros. Composição e Herança ©2012 Ludimila Monjardim Casagrande 2
  • 3. Mecanismos de Reutilização  Existem dois mecanismos básicos de reutilização de classes:  Composição (ou Delegação)  Herança  Com composição, usamos uma instância de uma classe como campo em outra classe.  Com herança, criamos uma classe nova como uma extensão direta da classe base. Composição e Herança ©2012 Ludimila Monjardim Casagrande 3
  • 4. Composição ou Delegação  Uma possível forma de reutilizar métodos de uma classe base em outra classe é incluindo uma instância da classe base como um dos atributos da nova classe.  Para que os métodos da classe base sejam executados, escrevemos métodos na classe nova que chamam os da classe base, delegando dessa forma a execução dos métodos. Composição e Herança ©2012 Ludimila Monjardim Casagrande 4
  • 5. Exemplo public class DataHora { // declaração da classe private Data estaData; // referência a uma instância da classe Data private Hora estaHora; // referência a uma instância da classe Hora public DataHora(int dia, int mes, int ano, int hora, int minuto, int segundo) { estaData = new Data(dia, mes, ano); estaHora = new Hora(hora, minuto, segundo); } public DataHora( int dia, int mes, int ano) { estaData = new Data(dia, mes, ano); estaHora = new Hora(); } public String toString() { return estaData + " " + estaHora; } } // fim da classe DataHora Composição e Herança ©2012 Ludimila Monjardim Casagrande 5
  • 6. Exemplo Composição e Herança ©2012 Ludimila Monjardim Casagrande 6
  • 7. Exemplo Composição e Herança ©2012 Ludimila Monjardim Casagrande 7
  • 8. Exemplo  A classe DataHora reutiliza as classes Data e Hora através de composição ou delegação.  A data e hora são representadas por instâncias das respectivas classes que estão embutidas na classe DataHora, e toda a interação entre esta classe e as embutidas é feita por meio da chamada de métodos das classes embutidas. Composição e Herança ©2012 Ludimila Monjardim Casagrande 8
  • 9. Exemplo  O construtor para a classe DataHora, que recebe argumentos para inicializar todos os campos que esta classe indiretamente contém, chama os construtores das classes Data e Hora para inicializar os campos das instâncias destas classes. Composição e Herança ©2012 Ludimila Monjardim Casagrande 9
  • 10. Composição e Modificadores de Acesso  Classes que contêm instâncias de outras classes estão submetidas às restrições impostas pelos modificadores de acesso utilizados na classe embutida mais as restrições impostas pela própria classe.  Exemplo:  Atributos estaData e estaHora na classe DataHora. Composição e Herança ©2012 Ludimila Monjardim Casagrande 10
  • 11. Considerações sobre a Composição  Reutilização de classes via delegação é útil quando a classe que reutiliza instâncias de outras é composta pelas outras classes.  No entanto, esse mecanismo não é o mais natural quando se trata da criação de classes que são especializações de um dado conceito. Composição e Herança ©2012 Ludimila Monjardim Casagrande 11
  • 12. Herança  O outro mecanismo para reutilização de código é a herança, que permite que uma nova classe seja criada por meio da extensão de uma já existente.  Na nova classe são implementadas eventuais diferenças de comportamento em relação à classe base, são adicionados atributos e métodos e são reutilizados atributos e métodos da classe base. Composição e Herança ©2012 Ludimila Monjardim Casagrande 12
  • 13. Herança  A herança deve ser utilizada quando se deseja especializar uma classe e quando existe a relação de “é um” entre a subclasse e a superclasse.  Exemplos:  Aluno é uma Pessoa  Professor é uma Pessoa Composição e Herança ©2012 Ludimila Monjardim Casagrande 13
  • 14. Exemplo  Se estivermos implementando um sistema para universidade, podemos pensar em classes como Aluno, Professor, Coordenador, Diretor, Secretária, etc.  Todas essas classes são pessoas. Portanto, podemos criá-las por meio do processo de herança, especializando a classe Pessoa. Composição e Herança ©2012 Ludimila Monjardim Casagrande 14
  • 15. Exemplo Composição e Herança ©2012 Ludimila Monjardim Casagrande 15
  • 16. Exemplo  A sintaxe para criação de herança em Java é simples. Basicamente, dizemos que uma classe herda ou “estende” outra, através da palavra-chave extends. Assim, definimos a classe Aluno da seguinte forma:  public class Aluno extends Pessoa Composição e Herança ©2012 Ludimila Monjardim Casagrande 16
  • 17. Exemplo Composição e Herança ©2012 Ludimila Monjardim Casagrande 17
  • 18. Considerações sobre o Exemplo  Desse modo, a classe Aluno foi criada a partir da classe Pessoa. Todos os atributos e métodos da classe Pessoa foram herdados pela classe Aluno.  Dizemos que a classe Pessoa é a classe base, ou superclasse, ou genérica, ou classe pai, e a classe Aluno é a classe especializada, ou subclasse, ou classe filha.  Pode ser usado o relacionamento estabelecido pela herança, pelo fato de podermos dizer que um Aluno é uma Pessoa. Composição e Herança ©2012 Ludimila Monjardim Casagrande 18
  • 19. Considerações sobre o Exemplo  Como o objeto da classe Aluno herda os atributos /métodos da classe Pessoa, ao criarmos um objeto aluno da classe Aluno, o código abaixo seria correto: Aluno aluno = new Aluno(); aluno.setNome(“João”); aluno.setCpf(“123456789”); ... aluno.setMatricula(1234);  No código podemos ver que os métodos que inicialmente foram definidos na classe Pessoa podem ser chamados para um objeto da classe Aluno. Composição e Herança ©2012 Ludimila Monjardim Casagrande 19
  • 20. Chamada de Construtor da Classe Pai  Considerando o exemplo anterior, nas linhas 7 a 12 temos:  Sabemos que public Aluno... define um construtor para a classe Aluno.  Na linha 9, o uso da palavra-chave super significa uma chamada ao construtor da classe Pai (Pessoa). Assim, a classe Aluno repassa para a classe Pai os dados que são herdados (nome, cpf, rg, endereço), e armazena na própria classe seus dados (matrícula e curso). Composição e Herança ©2012 Ludimila Monjardim Casagrande 20
  • 21. Dicas sobre Construtores  O primeiro comando executado por todo construtor é uma chamada para o construtor default da sua superclasse, a menos que isso seja explicitamente modificado na sua implementação.  Se você desejar fazer uma chamada para qualquer outro construtor, isso deve ser feito logo na primeira linha. Como no exemplo abaixo: Composição e Herança ©2012 Ludimila Monjardim Casagrande 21
  • 22. Dicas sobre Construtores  Um construtor pode chamar outro construtor da própria classe (overloaded) pelo uso da palavra-chave this ou qualquer construtor de uma das suas superclasses pela palavra-chave super. As palavras-chave devem ser sucedidas pelos argumentos do construtor de interesse.  Se você cria um construtor sem a chamada ao this ou super, o compilador irá inserir automaticamente uma chamada ao super() sem argumentos na primeira linha.  Não é possível chamar um método de instância (métodos não estático) ou acessar uma variável de instância antes que o construtor seja executado. Composição e Herança ©2012 Ludimila Monjardim Casagrande 22
  • 23. Leitura Recomendada  Capítulo 8 – Páginas 113 a 138 do Livro-Texto. Introdução à Programação Orientada a Objetos Usando Java. Composição e Herança ©2012 Ludimila Monjardim Casagrande 23