90 likes | 166 Views
Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Aula 21 e 22- Classes Abstratas e Interfaces http://www.ufpa.br/sampaio/bd2003/lpoo Elaborado pelos professores: Admilson Ribeiro e Marco Fagundes.
E N D
Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm@cin.ufpe.br Aula 21 e 22- Classes Abstratas e Interfaces http://www.ufpa.br/sampaio/bd2003/lpoo Elaborado pelos professores: Admilson Ribeiro e Marco Fagundes Marco Fagundes
Classes abstratas • Permite a definição de uma classe que declara a estrutura de uma abstração sem fornecer a implementação de cada método • A responsabilidade da implementação dos métodos é das subclasses • É utilizado o modificador abstract para declarar os métodos abstratos. • Uma classe abstrata tem tudo que uma classe concreta tem mais métodos abstratos • Herança Simples (extends)
Classes abstratas public abstract class classeabstrata{} • Tais classes não podem ser instanciadas diretamente com o operador new • Não se pode declarar construtores abstract, ou métodos abstract static • Toda subclasse de uma classe abstract deve implementar todos os métodos abstract na superclasse
Exemplo abstract class Abst01 { abstract void proc01( ); void procConcr( ){ System.out.println(“Dentro do metodo concreto de Abst01”); } } class Concr01 extends Abst01 { void proc01( ) { System.out.println(“Dentro do metodo concreto de Concr01”); } } class TestaAbstrata { public static void main(String args[ ]){ Abst01 a = new Concr01( ); a . proc01( ); a . procConcr( ); } }
Interfaces • Uma interface é uma especificação explícita de um conjunto de métodos, que são implementados por uma classe • Uma determinada classe pode implementar um número ilimitado de interfaces (herança múltipla) • Interface é uma expressão de projeto enquanto que uma classe é uma combinação de projeto e implementação
Interfaces • Nas interfaces, os métodos são declarados sem nenhum corpo • Para implementar uma interface, a classe tem que implementar os conjuntos de métodos declarados • Esses métodos devem corresponder exatamente às assinaturas dos método da interface
Declaração interface interface nome { tipo-retornado nome-metodo1(lista-parametros); tipo-retornado nome-metodo2(lista-parametros); . . . tipo nome-var1 = valor; tipo nome-var2 = valor; . . . } interface Chamada { void proc1 (int param); }
Declaração implements class nomeclasse [extends superclasse] [implements interface0 [,interface1 . . .] } { corpo-da-classe } class Cliente implements Chamar{ void proc1 (int p) { System.out.println(“método chamada com “ + p); } }
Declaração implements class Cliente implements Chamar{ void proc1 (int p) { System.out.println(“método Chamar com “ + p); } } class TestaInterface{ public static void main (String args[ ]){ Chamar c = new Cliente( ); c.(42); } }