Você está na página 1de 18

Programao I Orientao a Objetos

Classes Abstratas / Interfaces


Alexandre Michael alexandre_michael@unit.br

Classes Abstratas
Abstrao consiste em ocultar o cdigo de forma a que o programador se concentre apenas na sua lgica. No preciso saber os implementao de uma funo de software. detalhes de determinada

preciso saber o que faz a funo de software e a sua assinatura.


2

Classes Abstratas
Permitem uma maior clareza no projeto de sistemas. Uma classe abstrata no pode ser instanciada, ou seja, no h objetos que possam ser construdos diretamente da sua definio.

Classes Abstratas
Geralmente as classes abstratas definem um conjunto de funcionalidades das quais pelo menos uma est especificada mas no est definida, ou seja, contm pelo menos um mtodo abstrato.
public abstract class ClasseAbstrata { public abstract void imprimir(); }

Classes Abstratas
Tentar compilar o cdigo
public abstract class ClasseAbstrata { public static void main(String[] args) { ClasseAbstrata ca = new ClasseAbstrata(); } }

gera o seguinte erro :


ClasseAbstrata is an abstract class. It cant be instantiated.

Mtodos Abstratos
Mtodos abstratos obrigatoriamente pertencem a classes abstratas. So mtodos desprovidos de implementao. So apenas definies que podem ser aproveitadas por outras classes da hierarquia.

Mtodos Abstratos
Um mtodo abstrato no cria uma definio, mas apenas uma declarao de um mtodo que dever ser implementado em uma subclasse. Se esse mtodo no for implementado na subclasse, esta subclasse permanece como uma classe abstrata mesmo que no tenha sido assim declarada explicitamente. Assim, para que uma subclasse de uma classe abstrata possa gerar objetos, todos os mtodos abstratos da superclasse devem ser definidos.
7

Mtodos Abstratos
Em uma subclasse, preciso implementar um mtodo abstrato da superclasse, ou ento declarar esta subclasse tambm como abstrata.

INTERFACE

Interface
Uma interface equivale abstrata pura. a uma

classe

Uma interface descreve o que as classes devem fazer, sem especificar como elas devem fazer. Uma interface uma classe que no define a implementao dos mtodos, mas apenas as suas assinaturas (nomes e argumentos).

10

Interface
Uma interface contm apenas a especificao da funcionalidade que uma classe deve conter, sem determinar como esta funcionalidade deve ser implementada. Uma interface equivale a uma classe abstrata onde:

todos os mtodos so implicitamente public e abstract, todos os atributos so implicitamente public, static e final, (tornando-os constantes).
11

Interface
Enquanto uma classe abstrata herdada (palavra-chave extends) por uma subclasse, uma interface implementada (palavra-chave implements) por outras classes. Quando uma classe implementa uma interface, garante-se que todas as funcionalidades especificadas pela interface sero oferecidas pela classe; caso no implemente todos os seus mtodos, deve ser declarada como abstrata.

12

Interface
Uma classe pode implementar uma ou mais interfaces (mesmo que elas definam mtodos com a mesma assinatura). Somente as assinaturas dos mtodos podem ser includas em interfaces, isto , no permitido implementar nenhum mtodo.

13

Interface

Deve usar a palavra reservada interface no lugar da palavra class. No permitido a declarao de variveis (apenas constantes). No possui construtores.

14

Interface e Classe Abstrata


public abstract class Conta { public abstract void saque(double valor); public abstract void deposito(double valor); public abstract double getSaldo(); }

public interface Conta { void saque(double valor); void deposito(double valor); double getSaldo(); }

15

Interface
Uma classe pode herdar de outra classe. Uma classe pode implementar uma ou mais interfaces. Uma classe pode, ao mesmo tempo, herdar de uma outra classe e implementar uma ou mais interfaces.

16

Interface
A linguagem Java permite apenas herana simples, mas permite que uma classe implemente vrias interfaces. Importncia mltipla : permitir herana

Funcionalidade :
Declarar mtodos que uma ou mais classes devem implementar Capturar semelhanas entre classes no relacionadas sem que haja um relacionamento entre elas.

17

Classe Abstrata X Interface


Classe Abstrata Agrupa objetos com implementaes compartilhadas. Define novas classes atravs de herana de cdigo (herana simples). Uma classe s pode herdar de uma outra classe. Permite implementar um mtodo (no abstrato). Interface Agrupa objetos com implementaes diferentes. Define novas interfaces atravs de herana (herana mltipla). Uma classe pode implementar vrias interfaces. Nenhum mtodo pode ser implementado.
18

Você também pode gostar