Baixe o app para aproveitar ainda mais
Prévia do material em texto
POO Slides 14 – Redefinição Universidade Federal do Ceará Prof. Marcos Antonio de Oliveira Quixadá-CE, 17/11/2010 Redefinição • Vimos que nas classes filha podemos definir membros (atributos e métodos) que não haviam sido definidos na classe pai; • Podemos também redeclarar atributos e métodos que já haviam sido definidos na classe pai; • Este processo é conhecido como sobrescrita ou redefinição; Redefinição de atributos • Para redefinir um atributos devemos definir um atributo na classe filha com o mesmo identificador do atributo da classe pai; • Não é necessário que os tipos sejam iguais; • Exemplo: Redefinição de Métodos • É o processo de definir um método na classe filha com a mesma assinatura de um método definido na classe pai; • Desta forma, o método redefinido deverá ser definido na classe filha com o mesmo identificador, mesmo tipo de retorno e mesmos argumentos do método na classe pai; • Para simplificar o estudo, assumiremos que o método redefinido terá também a mesma visibilidade do método na classe pai; • O método redefinido poderá ter uma implementação diferente do método da classe pai; Exemplo de redefinição de método Note que nesta execução o método teste() chamado a partir da instância da ClasseFilha é o método sobrescrito pela classe filha; Redefinição de Métodos • A sobrescrita de um método em uma subclasse não elimina o acesso ao método definido na classe pai, este pode ser acessado na classe filha com a palavra-chave super, contanto que não tenha sido declarado como private; Redefinição de Métodos • Métodos declarados em subclasses com o mesmo identificador, mas assinatura diferente (quantidade diferente de argumentos) do método da superclasse, não estão sobrescrevendo o método da classe pai; Note que nesta execução o método teste() chamado a partir da instância da ClasseFilha é o método herdado; Redefinição de métodos • Uma classe que possui um método sobrecarregado pode ter seus métodos sobrescritos na classe filha; Na classe pai o método teste foi sobrecarregado. A classe filha está sobrescrevendo o método teste sem argumentos da classe pai. O método teste que recebe uma String não é sobrescrito na classe filha. Diferença entre sobrecarga e sobrescrita Sobrecarga Sobrescrita Pode ocorrer na mesma classe; Ocorre em classes diferentes; Pode ser aplicado somente a métodos; Pode ser aplicado a atributos e métodos; Métodos sobrecarregados devem ter assinaturas diferentes; Métodos sobrescritos devem ter a mesma assinatura; Não é referente à herança; É referente à herança; Exercício • Crie um sistema hospitalar que pode ser utilizado para cadastrar pacientes; – As classes a serem definidas neste sistema são Pessoa, Paciente, Médico, Hospital; – Vamos definir o que cada classe deve possuir; – Vamos definir um método chamado imprimir valores que deve ser definido em Pessoa e sobrescrito nas classes filhas; • Pessoa deve ter: – nome; – endereço; – idade; – cpf; – sexo; – Uma pessoa pode andar; • Paciente deve ter: – doença; – medicação – Um paciente pode sentir dor; – Um paciente pode ter alta; • Médico deve ter: – crm; – salário; – especialização; – Um médico pode dar plantão; • Além disto, todas as classes devem possuir um método imprimirValores que deve ser sobrescrito nas classes filhas.
Compartilhar