Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Interfaces X Classes Abstratas Com o início do paradigma de desenvolvimento OO, alguns termos se tornam corriqueiros no mundo de programadores e analistas de sistema. Classes, herança, polimorfismo são alguns destes termos. Herança múltipla em Java em Java não é possível public class Filhote extends Cachorro, Gato { } Mas isso é possível public class Filhote implements Cachorro, Gato { } Ou seja, uma determinada classe em Java pode implementar múltiplas interfaces e fazer uso de agregação para responder por chamadas a métodos que tecnicamente só poderiam acontecer se existisse a "herança múltipla". Algo como: 2 public class Filhote implements ICachorro, IGato{ private Cachorro cachorro = new Cachorro(); private Gato gato = new Gato(); @override public void latir(){ cachorro.latir(); } @override public void miar(){ gato.miar(); } } Interfaces As interfaces são padrões definidos através de contratos ou especificações. Um contrato define um determinado conjunto de métodos que serão implementados nas classes que assinarem esse contrato. Uma interface é 100% abstrata, ou seja, os seus métodos são definidos como abstract, e as variáveis por padrão são sempre constantes (static final). Uma interface é definida através da palavra reservada “interface”. Para uma classe implementar uma interface é usada a palavra “implements”, descrita na Listagem 8. Como a linguagem Java não tem herança múltipla, as interfaces ajudam nessa questão , pois bem se sabe que uma classe pode ser herdada apenas uma vez, mas pode implementar inúmeras interfaces. As classes que forem implementar uma interface terão de adicionar 3 todos os métodos da interface ou se transformar em uma classe abstrata, veja nos exemplos abaixo. Na Listagem 1 a interface Conta tem seus métodos sem corpo, apenas com os parâmetros e o tipo de retorno. Listagem 1: Declaração de uma interface interface Conta{ void depositar(double valor); void sacar(double valor); double getSaldo(); } Neste exemplo da Listagem 2 os métodos são sobrepostos através da interface Conta. Listagem 2: Classe Conta Corrente public class ContaCorrente implements Conta { private double saldo; private double taxaOperacao = 0.45; @Override public void depositar(double valor) { this.saldo += valor - taxaOperacao; } @Override public double getSaldo() { return this.saldo; } @Override public void sacar(double valor) { Conta Depositar() Sacar() getSaldo() ContaCorrente Saldo taxaoperacao ContaPoupanca Saldo GeradorExtratos geradorConta 4 this.saldo -= valor + taxaOperacao; } } Listagem 3: Classe ContaPoupanca com os métodos sobrepostos da interface Conta public class ContaPoupanca implements Conta { private double saldo; @Override public void depositar(double valor) { this.saldo += valor; } @Override public double getSaldo() { return this.saldo; } @Override public void sacar(double valor) { this.saldo -= valor; } } O método “geradorConta”, da Listagem 4, mostra a entrada de um parâmetro do tipo Conta, essa função será útil para a saída de um resultado. Listagem 4: Classe GeradorExtratos public class GeradorExtratos { public void geradorConta(Conta conta){ System.out.println("Saldo Atual: "+conta.getSaldo()); } } Na Listagem 5 são instanciadas as classes e o gerador de extratos. Na classe “GeradorExtratos” é invocado o método que aceita como parâmetro um tipo de “Conta”. Listagem 5: Classe TestaContas public class TestaContas { public static void main(String[] args) { ContaCorrente cc = new ContaCorrente(); cc.depositar(1000.10); cc.sacar(300); ContaPoupanca cp = new ContaPoupanca(); cp.depositar(500.20); 5 cp.sacar(50.20); GeradorExtrato gerador = new GeradorExtrato(); System.out.print("\nOPERAÇÕES COM INTERFACES E CLASSES - PROFESSOR: EDIBERTO MARIANO\n\n"); System.out.print("Conta Corrente = "); gerador.geradorConta(cc); System.out.print("Conta Poupança = "); gerador.geradorConta(cp); } } SAÍDA Abaixo um quadro comparativo para tornar mais fácil a compreensão entre diferenças e similaridades entre Classes Abstratas e Interfaces. 6 Leia mais em: Polimorfismo, Classes abstratas e Interfaces: Fundamentos da POO em Java http://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos- da-poo-em-java/26387#ixzz3HjNawC4y 7 INTERFACE EM JAVA Pergunta: O conceito definido na linguagem JAVA para descrever o comportamento através de um conjunto de métodos abstratos, é denominado de: Herança Polimorfismo Agregação Associação Interface
Compartilhar