0% acharam este documento útil (0 voto)
4 visualizações20 páginas

Classes Abstratas e Interfaces em Java

O documento explica sobre classes abstratas e interfaces em Java. Classes abstratas não podem ser instanciadas e possuem métodos abstratos. Interfaces definem contratos que classes implementam.

Enviado por

gugacf2
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
4 visualizações20 páginas

Classes Abstratas e Interfaces em Java

O documento explica sobre classes abstratas e interfaces em Java. Classes abstratas não podem ser instanciadas e possuem métodos abstratos. Interfaces definem contratos que classes implementam.

Enviado por

gugacf2
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Java Básico

Classes Abstratas e Interfaces

Ayslan Macedo de Sousa


1
Classes Abstratas

• Uma classe abstrata é desenvolvida para


representar entidades e conceitos abstratos
• Será uma superclasse

• Não pode ser instanciada

• Normalmente possui métodos abstratos

2
Classes abstratas em Java
Em java para que a classe seja abstrata é necessário o
uso da palavra-chave abstract na declaração da classe:

1. public abstract class Pessoa {


2.
3. }

3
Métodos Abstratos
• Um método abstrato só pode ser criado em uma
classe abstrata
• Os métodos abstratos devem ser obrigatoriamente
implementados pelas subclasses

• Métodos estáticos não podem ser abstratos.

• Atributos também não podem ser abstratos

4
Classes Abstratas - Pessaoa
Transformando a classe Pessoa em abstrata, e o método getDocumeto():
1. package [Link];
2.
3. public abstract class Pessoa {
4.
5. private String nome;
6. private String numeroDocumento;
7.
8. public Pessoa() {
9. }
10.
11. public Pessoa(String nome) {
12. [Link] = nome;
13. }
14.
15. public abstract String getDocumento();
16.
17. //getters e setters
18.
19. }

5
Classes Abstratas - UML
Na UML o nome da classe abstrata e os métodos abstratos
devem ficar em itálico:

6
Exercício - Transformar a classe Pessoa em Abstrata
• A classe Pessoa deve ser abstrata
• O método getDocumento() na classe pessoa deve ser abstrato
• O método getDocumento() na subclasse PessoaFisica deve retornar a String “CPF”
• O método getDocumento() na subclasse PessoaJuridica deve retornar a String
“CNPJ”

1. package [Link];
2.
3. public abstract class Pessoa {
4.
5. private String nome;
6. private String numeroDocumento;
7.
8. public abstract String getDocumento();
9.
10. //getters e setters
11.}

7
Interfaces

• É um contrato entre a classe e o mundo externo

• Quando uma classe implementa uma interface, ela


está comprometida a fornecer o comportamento
publicado pela interface

• Pode ser usada para isolar a lógica da implementação

8
Interfaces em Java
Para declarar uma interface em java, deve-se
usar a palavra-chave interface:

1. public interface FiguraGeometrica{

2. public String getTipoFigura();

3. public double getArea();

4. public double getPerimetro();

5. }

9
Exercício - Interfaces
• Criar o pacote [Link]
• Criar a classe FiguraGeometrica no pacote criado
– Dica: ao criar o arquivo, pode-se utilizar a IDE
• Clicar com direito selecionar Novo -> Interface Java

1. public interface FiguraGeometrica{

2. public String getTipoFigura();

3. public double getArea();

4. public double getPerimetro();

5. }

10
Interfaces
Quando a herança está presente na classe, o implements deve
vir após o extends:

1. public class Quadrado implements FiguraGeometrica extends QuatroLados {


2.

3. }

1. public class Quadrado extends QuatroLados implements FiguraGeometrica{


2.

3. }

11
Interfaces - Criando a implementação
Para “implementar” uma interface deve-se utilizar a palavra-
chave implements, após a definição da classe:

1. public class Quadrado implements FiguraGeometrica{


2.
3. public String getTipoFigura() {
4. return "Quadrado";
5. }
6.
7. public double getArea() {
8. //lógica de calcular a área
9. }
10.
11. public double getPerimetro() {
12. //lógica de calcular o perimetro
13. }
14. }

12
Interfaces

Importante!
Métodos de uma interfaces são por padrão public, assim ao
tentar colocar o método como private ou protected, o código
apresenta erro de compilação.

13
Interfaces - UML
No diagrama de classes UML uma interface e suas
implementações podem definidos como mostrado abaixo:

14
Exercício - Interface
• Dentro do pacote [Link] criar a classe Quadrado
• Criar um construtor que recebe o lado
• A classe quadrado deve implementar a interface FiguraGeometrica
• Desenvolver lógica para os métodos getArea() e getPerimetro()

1. public class Quadrado implements FiguraGeometrica{


2.
3. private int lado;
4.
5. public String getTipoFigura() {
6. return "Quadrado";
7. }
8.
9. }

15
Exercício - Interface
• Dentro do pacote [Link] criar a classe Circulo
• Criar um construtor que recebe o raio
• A classe quadrado deve implementar a interface FiguraGeometrica
• Desenvolver lógica para os métodos getArea() e getPerimetro()
– Área = 𝝅 ∗ 𝒓𝟐
– Perímetro = 𝟐 ∗ 𝝅 ∗ 𝒓

1. public class Circulo implements FiguraGeometrica{


2.
3. private int raio;
4.
5. public String getTipoFigura() {
6. return "Círculo";
7. }
8.
9. }

16
Exercício - Interfaces
• Dentro do pacote [Link] criar a classe TesteFiguraGeometrica
• Executar a classe e observar o resultado

1. package [Link];
2.
3. public class TesteFiguraGeometrica {
4.
5. public static void main(String[] args) {
6.
7. FiguraGeometrica figura1 = new Quadrado(2);
8. FiguraGeometrica figura2 = new Circulo(2);
9.
10. [Link]("Figura 1 - "+[Link]());
11. [Link]("Area - "+[Link]());
12. [Link]("Perímetro - "+[Link]());
13.
14. [Link]("Figura 2 - "+[Link]());
15. [Link]("Area - "+[Link]());
16. [Link]("Perímetro - "+[Link]());
17.
18. }
19.
20. }
17
Interfaces - Múltiplas implementações
Uma classe pode implementar várias interfaces. Ao fazer
isso ela está fazendo o contrato com essas interfaces.

Exemplo de classe que implementa 2 interfaces:


1. public class Quadrado implements FiguraGeometrica, QuatroLados{
2.
3. }

Exemplo de classe que implementa 3 interfaces:


1. public class Funcionario implements
2. Serializable, User, OutraInterface{
3.
4. }

18
Exercício de Fixação - Interface
Considerando as classe(s)/interface(s):
1. public interface Usuario{
2. }

1. public class Funcionario extends PessoaFisica{


2. }

Como ficaria a classe Funcionario se ela implementasse a interface Usuario?

a) public class Funcionario implements Usuario extends PessoaFisica

b) public class Funcionario extends PessoaFisica, Usuario

c) public class Funcionario extends PessoaFisica implement Usuario

d) public class Funcionario extends PessoaFisica implements Usuario

e) public class Funcionario extends PessoaFisica extends Usuario

19
Exercício de Fixação - Interface
Considerando as classe(s)/interface(s):
1. public interface Usuario{
2. }

1. public class Funcionario extends PessoaFisica{


2. }

Como ficaria a classe Funcionario se ela implementasse a interface Usuario?

a) public class Funcionario implements Usuario extends PessoaFisica

b) public class Funcionario extends PessoaFisica, Usuario

c) public class Funcionario extends PessoaFisica implement Usuario

d) public class Funcionario extends PessoaFisica implements Usuario

e) public class Funcionario extends PessoaFisica extends Usuario

20

Você também pode gostar