Orientação a Objetos Herança Generalização e Especialização Gil Eduardo de Andrade O Conceito de Herança O que é “Herança”? • Em alguns casos, diferentes classes possuem características em comum; • Ao invés de criarmos uma nova classe, repetindo as características, utilizamos as características da classe já existente; • Ou seja, herança é uma classe que deriva de outra classe pré-definida; Aula 05: Herança – Gil Eduardo de Andrade O Conceito de Herança Como funciona “Herança”? • Se tivermos uma classe Pessoa, com as características ou atributos: nome e data_nascimento; • Se criarmos uma classe Aluno, então todas as características da classe Pessoa também são válidas para classe Aluno; • Sendo assim Aluno deriva de Pessoa; Aula 05: Herança – Gil Eduardo de Andrade O Conceito de Herança Herança em Java • Para fazermos uma classe herdar características de outra classe usamos a palavra reserva extends; • Por exemplo: Public Class Aluno extends Pessoa { } Aula 05: Herança – Gil Eduardo de Andrade O Conceito de Herança Herança em Java • Importante observar que: o Java só permite que uma classe herde características de uma outra única classe – não há herança múltipla; • Entretanto, a herança pode ocorrer de forma encandeada: – Animal -> Mamífero -> Homem Aula 05: Herança – Gil Eduardo de Andrade O Conceito de Herança Exemplo de Herança encadeada Animal Mamífero Homem Nascer() Morrer() Nascer() Morrer() Mamar() Nascer() Morrer() Mamar() Pensar() Aula 05: Herança – Gil Eduardo de Andrade O Conceito de Herança Exemplo de Herança em Java Herda as características (atributos e métodos) da classe Pessoa. Superclasse – mais genérica Subclasse – mais especializada Aula 05: Herança – Gil Eduardo de Andrade O Conceito de Herança Representação Gráfica da Herança Pessoa idade : int nome : String Aluno ano : int turma : String Professor cursos : String[] disciplinas : String[] Aula 05: Herança – Gil Eduardo de Andrade O Conceito de Herança Os construtores na Herança • Na Herança, tanto a superclasse quanto a subclasse possuem seus respectivos construtores; • E para que seja possível invocar o construtor da superclasse, dentro da subclasse, utilizamos o métodos super(); Aula 05: Herança – Gil Eduardo de Andrade O Conceito de Herança Exemplo de Herança: Método “super()” Superclasse: generalização Aula 05: Herança – Gil Eduardo de Andrade O Conceito de Herança Exemplo de Herança: Método “super()” Subclasse: especialização Aula 05: Herança – Gil Eduardo de Andrade O Conceito de Herança Exemplo de Herança: Método “super()” Instanciando: objeto da subclasse “Aluno” Aula 05: Herança – Gil Eduardo de Andrade