SlideShare uma empresa Scribd logo
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 - 11 - Prática de Herança
PDF
POO - Aula 09 - Herança
PDF
Programação Orientada a Objetos
PDF
POO - 17 - Interfaces
PDF
Aula 02 - Principios da Orientação a Objetos (POO)
PDF
Programação Orientação a Objetos - Herança
PDF
Encapsulamento em Orientação a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 11 - Prática de Herança
POO - Aula 09 - Herança
Programação Orientada a Objetos
POO - 17 - Interfaces
Aula 02 - Principios da Orientação a Objetos (POO)
Programação Orientação a Objetos - Herança
Encapsulamento em Orientação a Objetos

Mais procurados (20)

PDF
Aula 2 - POO: Fundamentos da linguagem Java
PDF
Aula 1 - Introdução a POO
PPTX
Java: Heranca e polimorfismo
PDF
Classes abstratas e interfaces
PDF
POO - 19 - Elementos Estáticos
PDF
POO - 18 - Sobrecarga e Sobreposição de Métodos
PPTX
Java: Encapsulamento e modificadores de acesso
PDF
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
PDF
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
PDF
POO - 16 - Polimorfismo
PDF
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
PDF
Fundamentos e princípios do projeto orientado a objetos
PDF
Java orientação a objetos (associacao, composicao, agregacao)
PDF
Banco de Dados I Aula 06 - Generalização e Especialização
PDF
HERANÇA - Programação Orientada a Objetos JAVA
PDF
02 - Orientação a objetos e revisão de C# v1.5
PPTX
Módulo 9 - Introdução à Programação Orientada a Objectos
PPTX
JAVA - ENCAPSULAMENTO
PDF
POO - 06 - Encapsulamento
PPT
Java básico - Módulo 05 - Estruturas de Repetição
Aula 2 - POO: Fundamentos da linguagem Java
Aula 1 - Introdução a POO
Java: Heranca e polimorfismo
Classes abstratas e interfaces
POO - 19 - Elementos Estáticos
POO - 18 - Sobrecarga e Sobreposição de Métodos
Java: Encapsulamento e modificadores de acesso
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
POO - 16 - Polimorfismo
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
Fundamentos e princípios do projeto orientado a objetos
Java orientação a objetos (associacao, composicao, agregacao)
Banco de Dados I Aula 06 - Generalização e Especialização
HERANÇA - Programação Orientada a Objetos JAVA
02 - Orientação a objetos e revisão de C# v1.5
Módulo 9 - Introdução à Programação Orientada a Objectos
JAVA - ENCAPSULAMENTO
POO - 06 - Encapsulamento
Java básico - Módulo 05 - Estruturas de Repetição
Anúncio

Destaque (15)

PPTX
JAVA - Herança
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
JAVA - Herança
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
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
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
PPTX
10 heranca
PDF
Java oo-heranca
http://www.dm.ufscar.br/~waldeck/curso/java/
Reuso com Herança e Composição
Reuso com Herança e Composição
Herança.pptx
Programacao II Aula 7 Heranca-Diagrama Classe [Autosaved].pdf
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
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
10 heranca
Java oo-heranca

Mais de Ludimila Monjardim Casagrande (16)

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

PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Aula sobre desenvolvimento de aplicativos
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Processos na gestão de transportes, TM100 Col18
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Curso de Java 9 - (Threads) Multitarefas.pptx
COBITxITIL-Entenda as diferença em uso governança TI
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Aula 18 - Manipulacao De Arquivos python
Aula sobre desenvolvimento de aplicativos
Custos e liquidação no SAP Transportation Management, TM130 Col18
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Apple Pippin Uma breve introdução. - David Glotz
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Processos na gestão de transportes, TM100 Col18

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