Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança
Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public Modificadores de Acesso static e final Parte 05 Polimorfismo: sobrecarga Polimorfismo: sobrescrita Parte 06 Classes abstratas Interfaces 2 Herança
Override x Overload Na redefinição o método sobrescrito deve ter a mesma assinatura do método herdado Caso a assinatura seja diferente ocorrerá um overload (sobrecarga) de métodos 3 Herança
Herança Herança e Redefinição Evita duplicação de código Aumenta o reuso de código Redefinição Aumenta a extensibilidade do sistema Cobre os casos em que a herança ainda não é suficiente 4 Herança
Problemas: Redefinição de Métodos Obrigatoriedade de preservação da semântica do método original Preservação ou aumento da visibilidade Inadequados para alguns casos do mundo real: algumas características entre classes são comuns, porém existem diferenças em relação a algumas funcionalidades 5 Herança
Classes Abstratas Conceito que agrupa categorias que possuem apenas algumas características em comum Resolve os problemas da redefinição de métodos Melhor estruturação do software Melhor reuso Melhor extensibilidade Não podem ser instanciadas 6 Herança
Classe Abstratas (cont) Podem ter métodos abstratos: método sem corpo definido implementação é deixada para as subclasses sintaxe da declaração: public abstract void debitar(double valor); Subclasses não abstratas têm obrigatoriedade de implementar os métodos abstratos das superclasses 7 Herança
Interfaces 8 Herança
Interfaces Caso especial de classes abstratas Possui todos os métodos abstratos, públicos e não podem ser static. Não podem conter atributos, exceto static final (constantes globais). Conceito que agrupa categorias por funcionalidade Definem tipo de forma abstrata, apenas indicando a assinatura dos métodos 9 Herança
Interfaces Servem para publicar os métodos que um tipo deve prover Introduz conceitos de subtipo e supertipo (ao invés de subclasse e superclasse) Os métodos são implementados pelos subtipos Não possuem construtores -> Não podem ser instanciadas 10 Herança
Múltiplos supertipos Uma classe pode implementar mais de uma interface (pode ter vários supertipos) << A >> << B >> << C >> Implementa os métodos de A, B e C D 11 Herança
Relação de implementação A classe que implementa uma interface deve definir os métodos da interface classes concretas têm que implementar todos os métodos da interface classes abstratas que implementam interfaces podem deixar de implementar algum método abstrato definido na interface 12 Herança
Subtipos e instanceof public class Circulo extends Forma implements Selecao, Rotacao, Movimentacao { }...... Circulo c = new Circulo(); res1 = c instanceof Circulo; res2 = c instanceof Selecao; res3 = c instanceof Rotacao; res4 = c instanceof Movimentacao;... 13 Herança
Interfaces e atributos Interfaces são excelentes repositórios para constantes globais public interface TipoConta{ } public static final int CONTA = 0; public static final int POUPANCA = 1; public static final int BONIFICADA = 2; public static final int IMPOSTO = 3; 14 Herança