Sei sulla pagina 1di 143

Universo

Java
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Galxia
JSE
Java Standard
Edition
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Constelao
Programao
orientada a objetos
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Parte I Introduo Programao Orientada a Objetos

Parte II Classes e objetos

Parte III Herana e interfaces

Parte IV Tipos enumerados e annotations

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Parte I Introduo Programao Orientada a Objetos

Parte II Classes e objetos

Parte III Herana e interfaces

Parte IV Tipos enumerados e annotations

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Parte III
Herana e
interfaces
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Desafios

Introduo herana

Herana de membros

Herana e mtodos

Questes de concursos

Hierarquia de classes

Casting de objetos

Hora de praticar

Polimorfismo

Hora de praticar

Questes de concursos

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Invocao de mtodos

Herana e atributos

Questes de concursos

Palavra-chave super

Hora de praticar

Evitando herana

Questes de concursos

Classe Object

Classes e mtodos abstratos

Hora de praticar
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Tpicos

Questes de concursos

Interfaces

Hora de praticar

Questes de concursos

Interfaces e classes abstratas

Questes de concursos

Operador instanceof

Questes de concursos

Respostas dos desafios

Referncias
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

Desafios

[RGA] A linguagem Java suporta a herana mltipla.


[CERTO/ERRADO]
[RGA] Na ausncia de qualquer outra superclasse explcita,
cada classe implicitamente uma subclasse de Object.
[CERTO/ERRADO]
[RGA] Na linguagem Java, uma subclasse herda todos os
membros acessveis de sua superclasse, inclusive os
construtores desta. [CERTO/ERRADO]
[RGA] Subclasse no mesmo pacote da sua superclasse herdar
da superclasse os membros com os nveis:
[RGA] Subclasse em pacote diferente da sua superclasse
herdar da superclasse os membros com os nveis:
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

10

Desafios

[RGA] A subclasse tambm herda os membros privados da sua


superclasse. [CERTO/ERRADO]

[RGA] O que so mtodos sobrescritos?

[RGA] Quando acontece um mtodo ocultado?

[RGA] Um mtodo pblico de uma superclasse pode ser


sobrescrito em uma subclasse como protected.
[CERTO/ERRADO]
[RGA] Um mtodo de instncia de uma superclasse pode ser
sobrescrito em uma subclasse como mtodo esttico.
[CERTO/ERRADO]
[RGA] O que casting implcito de objetos? E o que casting
explcito?
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

11

Desafios

[RGA] Quando acontece a ligao prematura? E a tardia?


[RGA] Quais so os casos na linguagem Java que no
acontecem a ligagao tardia?
[RGA] Quando um atributo de uma subclasse oculta um
atributo de sua superclasse?
[RGA] Quais so as formas de evitar herana?
[RGA] Uma classe abstrata deve ter todos seus mtodos
abstratos. [CERTO/ERRADO]
[RGA] Todos os mtodos de uma interface so
automaticamente public. [CERTO/ERRADO]
[RGA] As interfaces fornecem uma alternativa para herana
mltipla na linguagem de programao Java. [CERTO/ERRADO]
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

12

Desafios

[RGA] Quais os tipos um objeto pode ter?

[RGA] Todas as variveis em uma interface so implicitamente:

[RGA] Todos os mtodos declarados em uma interface so


implicitamente:

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

13

Introduo herana

Na linguagem Java, as classes podem ser derivadas de outras


classes

Herdando, assim, campos e mtodos dessas classes

Exemplo:

public class Subclasse extends Superclasse {

Atributos e mtodos adicionados

Termos:

Subclasse

uma classe derivada de outra

Tambm chamada de:

Classe derivada

Classe estendida
Classe filha

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

14

Introduo herana

Termos:

Superclasse

a classe base para uma subclasse

Tambm chamada de:

Classe me
Classe pai

Classes descendentes

Classe base

So classes em um nvel inferior em relao a outras em uma


hierarquia de herana de classes onde a classe base da hierarquia
Object

Classes ancestrais

So classes em um nvel superior em relao a outras em uma


hierarquia de herana de classes onde a classe base da hierarquia
Object
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

15

Introduo herana

Herana simples

Na linguagem Java, cada classe tem uma e apenas uma


superclasse direta

Exceto a classe Object que no possui superclasse

Na ausncia de qualquer outra superclasse explcita, cada classe


implicitamente uma subclasse de Object

Todas as classes na linguagem Java so descendentes de Object

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

16

Introduo herana

A subclasse herda todos os membros acessveis de sua


superclasse:

Atributos

Mtodos

Classes aninhadas

Construtores no so membros de uma classe

Construtores da superclasse:

No so herdados por subclasses

Podem ser chamados a partir da subclasse

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

17

Herana de membros

Subclasse no mesmo pacote da sua superclasse herdar da


superclasse os membros com os nveis:

public

protected

default

Subclasse em pacote diferente da sua superclasse herdar da


superclasse os membros com os nveis:

public

protected

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

18

Herana de membros

A subclasse no herda os membros privados da sua


superclasse

No entanto, a subclasse pode acessar esses atravs de outros


membros pblicos, protegidos ou padres disponibilizados pela
superclasse para acessar os seus membros privados

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

19

Herana de membros
Pacote
Pacote 11
public
public class
class A
A {{
private
private String
String atributo1
atributo1;;
public
public String
String atributo2
atributo2;;
protected
protected String
String atributo3
atributo3;;
String
String atributo4
atributo4;;
}}

Pacote
Pacote 22

public
public class
class C
C extends
extends A
A {{
public
public String
String atributo2
atributo2;;
protected
protected String
String atributo3
atributo3;;
}}

class
class BB extends
extends A
A {{
public
public String
String atributo2
atributo2;;
protected
protected String
String atributo3
atributo3;;
String
String atributo4
atributo4;;
}}

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

20

Herana e mtodos

Mtodos sobrescritos

So mtodos de instncia herdados que foram reescritos na


subclasse

Alterando o comportamento deles

Substituindo eles

Possuem a mesma assinatura que os mtodos herdados

Anotao @Override

usada quando houver a sobrescrita do mtodo herdado

Instruindo o compilador sobre a sobrescrita

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

21

Herana e mtodos

Mtodos sobrescritos

Exemplos:

Superclasse:

public class Superclasse {

public int teste(int x) {

return x * 10;
}

Subclasse:

public class Subclasse extends Superclasse {

@Override
public int teste(int x) {

return x * 10 + 15;
}

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

22

Herana e mtodos

Mtodos ocultados

Um mtodo da subclasse oculta o da superclasse quando o


mtodo esttico da subclasse possui a mesma assinatura da
mtodo esttico da superclasse

Mtodos sobrescritos x mtodos ocultados

A verso do mtodo sobrescrito quando invocado aquela da


subclasse

Pois houve a reescrita do mtodo herdado

A verso do mtodo oculto depende se ele invocado:

Da superclasse

Da subclasse

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

23

Herana e mtodos

Mtodos sobrescritos x mtodos ocultados

Exemplos:

Superclasse:

public class Superclasse {

public static String nomeClasse() {

return "SUPERclasse";
}
public String teste() {

return Instncia da classe Superclasse;


}

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

24

Herana e mtodos

Mtodos sobrescritos x mtodos ocultados

Exemplos:

Subclasse:

public class Subclasse extends Superclasse {

// Mtodo que ocultou o da superclasse.


public static String nomeClasse() {

return "SUBclasse";
}
// Mtodo que sobrescreveu o da superclasse.
@Override
public String teste() {

return Instncia da classe Subclasse;


}

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

25

Herana e mtodos

Mtodos sobrescritos x mtodos ocultados

Exemplos:

Classe executvel:

public class Exemplo {

public static void main(String[] args) {

Subclasse variavelSubClasse = new Subclasse();

Superclasse variavelSuperClasse = variavelSubClasse;

System.out.println(Superclasse.nomeClasse());
System.out.println(Subclasse.nomeClasse());
System.out.println(variavelSuperClasse.nomeClasse());
System.out.println(variavelSuperClasse.teste());

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

26

Herana e mtodos

Mtodos sobrescritos x mtodos ocultados

Exemplos:

Resultado da classe executvel:

SUPERclasse
SUBclasse

SUPERclasse

Instncia da classe Subclasse

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

27

Herana e mtodos

Mtodos sobrecarregados

So mtodos da subclasse que possuem mesmos nomes, mas


nmero e tipos de parmetros diferentes dos mtodos da
superclasse
No escondem nem substituem os mtodos da superclasse

So novos mtodos exclusivos para a subclasse

Exemplos:

Subclasse:

public class Subclasse extends Superclasse {

public int teste(int x, int y) {

return x * y * 10 + 15;
}

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

28

Herana e mtodos

Modificadores

Modificadores de nveis de acesso

O modificador de acesso de um mtodo sobrescrito ou oculto deve


ser igual ou mais liberal ao mtodo da superclasse

Modificador static

Haver erro de compilao se houver a tentativa de mudar:

Um mtodo de instncia na superclasse para um mtodo esttico na


subclasse
Um mtodo esttico na superclasse para um mtodo de instncia na
subclasse

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

29

Herana e mtodos

private
private

default
default

protected
protected

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

public
public

30

Herana e mtodos
Mtodo de instncia da
superclasse

Mtodo esttico da
superclasse

Mtodo de instncia da
subclasse

Sobrescreve

Gera erro de compilao

Mtodo de esttico da
subclasse

Gera erro de compilao

Oculta

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

31

Questes de concursos
[CESPE 2011 CORREIOS Cargo 3] A respeito da orientao a
objetos, julgue o item subsequente.

[89] Na linguagem de programao Java, um mtodo pblico


da superclasse somente pode ser anulado por um mtodo
pblico da subclasse.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

32

Questes de concursos
[CESPE 2011 CORREIOS Cargo 3] A respeito da orientao a
objetos, julgue o item subsequente.

[89] Na linguagem de programao Java, um mtodo pblico


da superclasse somente pode ser anulado por um mtodo
pblico da subclasse.

Gabarito: ERRADO.

Justificativa da mudana de gabarito:

O termo anular no representa a sobrescrio do mtodo da


superclasse. Por esse motivo opta-se alterao do gabarito do item.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

33

Hierarquia de classes
Object
Object

ContaCorrente
ContaCorrente

ContaPoupanca
ContaPoupanca

ContaMovimento
ContaMovimento

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

34

Hierarquia de classes
ContaPoupanca conta = new ContaPoupanca();
ContaPoupanca
ContaPoupanca
private
private double
double taxaJuros;
taxaJuros;
private
private double
double correcaoMonentaria;
correcaoMonentaria;
public
public static
static String
String nome();
nome();
public
public void
void extrato();
extrato();
conta
conta

ContaCorrente
ContaCorrente
private
private long
long numeroConta;
numeroConta;
private
private double
double saldo;
saldo;
public
public static
static String
String nome();
nome();
public
public void
void extrato();
extrato();

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

35

Casting de objetos

Mostra o uso de um objeto de um tipo no lugar de outro tipo


entre os objetos permitidos por herana e implementaes
H dois tipos:

Casting implcito

Casting explcito

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

36

Casting de objetos

H dois tipos:

Casting implcito

Quando uma varivel-objeto de uma classe ancestral referencia um


objeto instncia de uma das classes descendentes da hieraquia

Exemplo:

Uma classe descendente uma classe ancestral


Object variavelObjeto = new ContaCorrente();

Casting explcito

Quando uma varivel-objeto de uma classe descendente referencia


um objeto instncia de uma das classes ancestrais da hieraquia

checado em tempo de execuo

Caso haja falha de checagem, lanada uma ClassCastException

Exemplo:

ContaCorrente variavelConta = (ContaCorrente) variavelObjeto;

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

37

Casting de objetos

implcito
Casting implcito
Casting

explcito
Casting explcito
Casting

Object
Object

ContaCorrente
ContaCorrente

ContaPoupanca
ContaPoupanca

ContaMovimento
ContaMovimento

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

38

Casting de objetos
ContaCorrente conta1 = new ContaPoupanca();
ContaPoupanca
ContaPoupanca
private
private double
double taxaJuros;
taxaJuros;
private
private double
double correcaoMonentaria;
correcaoMonentaria;
public
public static
static String
String nome();
nome();
public
public void
void extrato();
extrato();
conta1
conta1

ContaCorrente
ContaCorrente
private
private long
long numeroConta;
numeroConta;
private
private double
double saldo;
saldo;
public
public static
static String
String nome();
nome();
public
public void
void extrato();
extrato();

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

39

Casting de objetos
ContaPoupanca conta2 = (ContaPoupanca) conta1;
ContaPoupanca
ContaPoupanca
conta1
conta1

private
private double
double taxaJuros;
taxaJuros;
private
private double
double correcaoMonentaria;
correcaoMonentaria;
public
public static
static String
String nome();
nome();
public
public void
void extrato();
extrato();
ContaCorrente
ContaCorrente

conta2
conta2

private
private long
long numeroConta;
numeroConta;
private
private double
double saldo;
saldo;
public
public static
static String
String nome();
nome();
public
public void
void extrato();
extrato();

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

40

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

41

Hora de praticar

constelacao02.parte03

Exemplo01_ContaCorrenteConcreta

constelacao02.parte03.classes.contacorrenteconcreta

ContaCorrente

ContaPoupanca

ContaMovimento

Banco

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

42

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 19]

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

43

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 19]

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

44

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 19]

public class Prog {

public static void main(String args[]) {

C1 a = new C1();

a.f(); // 1.

C2 b = new C2();

b.f(); // 2.

a = b;

a.f(); // 2.

b.g(); // 2.

}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

45

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 19] Considerando a execuo
do trecho de cdigo em Java acima, o programa

[A] sequer compila, pois a atribuio a = b (linha 23) est


incorreta por incompatibilidade de tipos.
[B] compila, mas gerado um erro de execuo por
incompatibilidade da atribuio a = b (linha 23).

[C] imprime 1 2 1 1.

[D] imprime 1 2 1 2.

[E] imprime 1 2 2 2.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

46

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 19] Considerando a execuo
do trecho de cdigo em Java acima, o programa

[A] sequer compila, pois a atribuio a = b (linha 23) est


incorreta por incompatibilidade de tipos.
[B] compila, mas gerado um erro de execuo por
incompatibilidade da atribuio a = b (linha 23).

[C] imprime 1 2 1 1.

[D] imprime 1 2 1 2.

[E] imprime 1 2 2 2.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

47

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 61]

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

48

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 61]

package pk1;

public class C1 {

void f() {

// C2 no consegue ver o este mtodo porque default.

System.out.println("C1");

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

49

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 61]

package pk2; import pk1.C1;

public class C2 extends C1 {

// Este mtodo no sobrescreve o f() de C1.

System.out.println("C2");

public static void main(String args[]) {

void f() {

C1 c = new C2();

c.f(); // Acontece erro de compilao, pois c instncia de C1, nesse


caso, reconhece apenas f() de C1 e f() default.

}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

50

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 61] Analisando o cdigo
acima, verifica-se que o programa

[A] no compila: erro na linha 04 de C2.

[B] no compila: erro na linha 08 de C2.

[C] no compila: erro na linha 09 de C2.

[D] executa e imprime C1.

[E] executa e imprime C2.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

51

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 61] Analisando o cdigo
acima, verifica-se que o programa

[A] no compila: erro na linha 04 de C2.

[B] no compila: erro na linha 08 de C2.

[C] no compila: erro na linha 09 de C2.

[D] executa e imprime C1.

[E] executa e imprime C2.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

52

Polimorfismo

a propriedade de duas ou mais classes derivadas de uma


mesma superclasse responderem a mesma mensagem

Ocorre quando uma subclasse redefine um mtodo existente


na superclasse

Cada uma de uma forma diferente

Mtodos sobrescritos (overriding)

Mtodos sobrecarregados e polimorfismo:

Alguns autores chamam mtodos sobrecarregados de


polimorfismo esttico
Outros no aceitam mtodos sobrecarregados como
polimorfismo

A FCC atualmente segue esses autores


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

53

Polimorfismo

Na linguagem de programao Java, as variveis-objeto so


polimorfas

Elas podem referenciar:

Tanto um objeto do tipo delas

Quanto objetos de qualquer subclasse do tipo das variveis

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

54

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

55

Hora de praticar

constelacao02.parte03

Exemplo02_TestandoPolimorfismo

constelacao02.parte03.classes

Pessoa

Homem

Mulher

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

56

Questes de concursos
[FCC 2012 MPE/AP Analista Ministerial Tecnologia da
Informao Questo 35] Analise o cdigo das classes a seguir
presentes em um mesmo pacote de um projeto Java:

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

57

Questes de concursos
[FCC 2012 MPE/AP Analista Ministerial Tecnologia da
Informao Questo 35] Com base nos cdigos apresentados e
nos conceitos da orientao a objetos correto afirmar:

[A] No mtodo main da classe Start no possvel instanciar


objetos das classes NewClassA e NewClassB, pois essas
classes no contm um construtor vlido.
[B] Se for digitada a instruo NewClassB c = new
NewClassA(); no mtodo main da classe Start ser instanciado
um objeto da NewClassA.
[C] Se for digitada a instruo NewClassA b = new
NewClassB(); no mtodo main da classe Start ocorrer um
erro, pois no possvel criar um objeto da NewClassA por
meio do construtor da NewClassB.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

58

Questes de concursos
[FCC 2012 MPE/AP Analista Ministerial Tecnologia da
Informao Questo 35] Com base nos cdigos apresentados e
nos conceitos da orientao a objetos correto afirmar:

[A] No mtodo main da classe Start no possvel instanciar


objetos das classes NewClassA e NewClassB, pois essas
classes no contm um construtor vlido.
[B] Se for digitada a instruo NewClassB c = new
NewClassA(); no mtodo main da classe Start no ser
instanciado um objeto da NewClassA.
[C] Se for digitada a instruo NewClassA b = new
NewClassB(); no mtodo main da classe Start no ocorrer um
erro, pois no possvel criar um objeto da NewClassA por
meio do construtor da NewClassB.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

59

Questes de concursos
[FCC 2012 MPE/AP Analista Ministerial Tecnologia da
Informao Questo 35] Com base nos cdigos apresentados e
nos conceitos da orientao a objetos correto afirmar:

[D] A existncia de dois mtodos de mesmo nome na


NewClassA que recebem a mesma quantidade de parmetros
indica que est ocorrendo uma sobrescrita de mtodos.
[E] Por meio de um objeto da NewClassB ser possvel acessar
os mtodos presentes na NewClassA.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

60

Questes de concursos
[FCC 2012 MPE/AP Analista Ministerial Tecnologia da
Informao Questo 35] Com base nos cdigos apresentados e
nos conceitos da orientao a objetos correto afirmar:

[D] A existncia de dois mtodos de mesmo nome na


NewClassA que recebem a mesma quantidade de parmetros
indica que est ocorrendo uma sobrescrita sobrecarga de
mtodos.
[E] Por meio de um objeto da NewClassB ser possvel acessar
os mtodos presentes na NewClassA.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

61

Questes de concursos
[CESPE 2012 ANAC Cargo 4] Acerca da execuo dos trechos de
cdigos referentes linguagem de programao Java, julgue o
item seguinte.

[69] O resultado da classe TestaOut abaixo ser 300.

public class OutTeste {

protected int i = 100;

public int getInteiro() {

return i;

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

62

Questes de concursos
[CESPE 2012 ANAC Cargo 4] Acerca da execuo dos trechos de
cdigos referentes linguagem de programao Java, julgue o
item seguinte.

[69] O resultado da classe TestaOut abaixo ser 300.

public class TestaOut extends OutTeste {

public void process(OutTeste a)

{ a.i = a.i*3; }

public static void main(String[] args) {

OutTeste a = new TestaOut();

TestaOut b = new TestaOut();


b.process(a);

System.out.println( a.getInteiro() );

}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

63

Questes de concursos
[CESPE 2012 ANAC Cargo 4] Acerca da execuo dos trechos de
cdigos referentes linguagem de programao Java, julgue o
item seguinte.

[69] O resultado da classe TestaOut abaixo ser 300.

Gabarito: CERTO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

64

Questes de concursos
[CESPE 2010 MPU Cargo 25] Com relao linguagem Java,
usada para projetar e manipular itens de dados complexos
(objetos), julgue o item.

[137] No cdigo em Java mostrado a seguir, as classes Conta


e Poupanca implementam o polimorfismo dinmico.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

65

Questes de concursos
[CESPE 2010 MPU Cargo 25] Com relao linguagem Java,
usada para projetar e manipular itens de dados complexos
(objetos), julgue o item.

[137] No cdigo em Java mostrado a seguir, as classes Conta


e Poupanca implementam o polimorfismo dinmico.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

66

Questes de concursos
[CESPE 2010 MPU Cargo 25] Com relao linguagem Java,
usada para projetar e manipular itens de dados complexos
(objetos), julgue o item.

[137] No cdigo em Java mostrado a seguir, as classes Conta


e Poupanca implementam o polimorfismo dinmico esttico.

Gabarito: ERRADO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

67

Invocao de mtodos

Formas:

Ligao prematura

Early binding

Acontece quando o mtodo a ser invocado em tempo de


compilao do programa

Ligao tardia

Late binding

Demonstra um aspecto das caractersticas importantes do


polimorfismo na linguagem Java

Acontece quando o mtodo a ser invocado em tempo de


execuo do programa

A JVM chama o mtodo adequado para o objeto que referenciado


pela varivel-objeto

No chama o mtodo que definido pelo tipo da varivel

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

68

Invocao de mtodos

Formas:

Ligao tardia (continuao)

Tambm conhecida pelos termos:

Dynamic binding

Run-time binding

Virtual Method Invocation

Na linguagem de programao Java, todas as invocaes de


mtodos ocorrem atravs de ligao tardia

Exceto nos casos:

Mtodos declarados como:

private
final

static

Construtores
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

69

Herana e atributos

Atributos escondidos

Um atributo da subclasse oculta o da superclasse quando o


atributo da subclasse possui a mesmo nome do atributo da
superclasse

Mesmo que sejam de tipos diferentes

Usa-se palavra-chave super seguido do nome do atributo da


superclasse para referenci-lo dentro da subclasse depois dele
ser ocultado por essa

Exemplo:

super.nome

Essa prtica desencorajada

Pois dificulta o entendimento do cdigo

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

70

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 58]

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

71

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 58] Linguagens orientadas a
objeto possuem modificadores de acesso que so palavraschaves que costumam limitar ou liberar o acesso a variveis e/ou
mtodos, de forma a implementar o conceito de
encapsulamento. Existem vrios modificadores de acesso em
Java que controlam este acesso, tais como os modificadores
public, private e protected.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

72

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 58] Com base nestes
conceitos, qual ser o resultado obtido se o fragmento de cdigo
acima for includo em uma classe e compilado em linguagem
Java?

[A] Um erro de compilao na linha 10, pois atributos com


modificadores private s podem ser acessados na classe que
os definem.
[B] Um erro de compilao na linha 8, pois atributos com
modificadores public no podem ser redefinidos nas classes
filhas.
[C] Um erro de compilao na linha 7, pois classes que
contm atributos com modificadores de acesso private so
finais, isto , no podem ser extendidas.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

73

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 58] Com base nestes
conceitos, qual ser o resultado obtido se o fragmento de cdigo
acima for includo em uma classe e compilado em linguagem
Java?

[A] Um erro de compilao na linha 10, pois atributos com


modificadores private s podem ser acessados na classe que
os definem.

O correto erro de compilao na linha 11

[B] No h Um erro de compilao na linha 8, pois atributos


com modificadores public no podem ser redefinidos nas
classes filhas.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

74

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 58] Com base nestes
conceitos, qual ser o resultado obtido se o fragmento de cdigo
acima for includo em uma classe e compilado em linguagem
Java?

[C] No h Um erro de compilao na linha 7, pois classes que


contm atributos com modificadores de acesso private so
finais, isto , no podem ser extendidas 11.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

75

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 58] Com base nestes
conceitos, qual ser o resultado obtido se o fragmento de cdigo
acima for includo em uma classe e compilado em linguagem
Java?

[D] Uma exceo na linha 11, pois apesar de reconhecer o


atributo b em tempo de compilao, o fato dele ter
modificador de acesso private impede que a classe filha
obtenha seu valor em tempo de execuo.
[E] A compilao bem sucedida do cdigo.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

76

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 58] Com base nestes
conceitos, qual ser o resultado obtido se o fragmento de cdigo
acima for includo em uma classe e compilado em linguagem
Java?

[D] Uma exceo erro de compilao na linha 11, pois apesar


de reconhecer o atributo b em tempo de compilao, o fato
dele ter modificador de acesso private impede que a classe
filha obtenha seu valor em tempo de execuo pois atributos
com modificadores private s podem ser acessados na classe
que os definem.
[E] A compilao no bem sucedida do cdigo.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

77

Palavra-chave super

usado para acessar, da superclasse:

Seus membros

Atributos ocultos da superclasse

Mtodos sobrescritos da superclasse

Seus construtores

Sintaxe:

super();

super(lista de parmetros);

Importante:

Se um construtor da subclasse no chamar explicitamente um


construtor da superclasse, o compilador Java insere automaticamente
uma chamada para o construtor sem argumento da superclasse

Se a superclasse no possui um construtor sem argumento, haver


um erro em tempo de compilao neste caso

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

78

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

79

Hora de praticar

constelacao02.parte03

Exemplo03_PalavraChaveSuper

constelacao02.parte03.classes

Superclasse

Subclasse

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

80

Evitando herana

Umas das razes para evitar a herana certifica-se que a


semntica no pode ser alterada em uma subclasse
H duas formas:

Classes com o modificador final

Torna uma classe impossvel de ser estendida

A classe String uma classe final

public final class Classe {

Mtodos com o modificador final

Torna o mtodo impossvel de ser sobrescrito

Alguns mtodos da classe Object so final

public final void metodo() {

System.out.println(Texto);

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

81

Questes de concursos
[CESPE 2011 MPE/PI Cargo 6] Julgue o prximo item, a respeito
de linguagens e tecnologias de programao.

[117] Em Java, qualquer mtodo de uma classe pode ser


sobrescrito por mtodos de outra classe.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

82

Questes de concursos
[CESPE 2011 MPE/PI Cargo 6] Julgue o prximo item, a respeito
de linguagens e tecnologias de programao.

[117] Em Java, no qualquer mtodo de uma classe que


pode ser sobrescrito por mtodos de outra classe.

Gabarito: ERRADO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

83

Classe Object

Encontra-se no pacote java.lang

Situa-se no topo da rvore de hierarquia de classes

antecedente de qualquer classe

Diretamente

No necessrio escrever:

public class Classe extends Object

Indiretamente

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

84

Classe Object
Retorno

Mtodo

Descrio

Object

clone()

Cria e retorna uma cpia do objeto

boolean

equals()

Indica se algum outro objeto igual a outro

void

finalize()

Chamado pelo garbage collector em um objeto quando a


garbage collection determina que no h mais referncias
ao objeto

Class<?>

getClass()

Retorna a classe em tempo de execuo do objeto

int

hashCode()

Retorna um valor de cdigo hash para o objeto

void

notify()

Acorda uma nica thread que est esperando no monitor


deste objeto

void

notifyAll()

Acorda todas threads que esto aguardando no monitor


deste objeto

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

85

Classe Object
Retorno

Mtodo

Descrio

String

toString()

Retorna uma representao de string do


objeto

wait()

Faz com que a thread atual esperar at


que outra thread invoque notify() ou
notifyAll() para este objeto

wait(long timeout)

Faz com que a thread atual esperar at


que outra thread invoque notify() ou
notifyAll() para este objeto ou at um
determinado perodo de tempo decorrido

wait(long timeout, int nanos)

Faz com que a thread atual esperar at


que outra thread invoque notify() ou
notifyAll() para este objeto ou at uma
thread interromper a thread atual ou at
uma certa quantidade de tempo real ter
decorrido

void

void

void

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

86

Classes e mtodos abstratos

Classe abstrata

uma classe declarada com o modificador abstract

Pode ou no incluir mtodos abstratos

No pode ser instanciada

Mas pode ter subclasses

Pode ter:

Atributos estticos

Mtodos estticos

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

87

Classes e mtodos abstratos

Mtodo abstrato

um mtodo declarado:

Com o modificador abstract

Sem uma implementao

Sem chaves

Seguido por um ponto e vrgula

implementado por alguma subclasse da classe abstrata que


contm esse mtodo

Caso uma subclasse no implemente o mtodo abstrato, ela ser


tambm abstrata

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

88

Classes e mtodos abstratos

Exemplos:

public abstract class ContaCorrente {

// Atributos necessrios.

// Construtores necessrios.

// Mtodos no abstratos necessrios.

// Mtodo abstrato que pode ser implementado pelas subclasses.

public abstract void extrato();

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

89

Classes e mtodos abstratos

Exemplos (continuao):

public class ContaPoupanca extends ContaCorrente {

// Atributos necessrios.

// Construtores necessrios.

// Mtodos no abstratos necessrios.

// Mtodo implementado.

@Override

public void extrato() {

// Implementao do mtodo extrato.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

90

Classes e mtodos abstratos

implcito
Casting implcito
Casting

explcito
Casting explcito
Casting

Object
Object

ContaCorrente
ContaCorrente

ContaPoupanca
ContaPoupanca

ContaMovimento
ContaMovimento

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

91

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

92

Hora de praticar

constelacao02.parte03

Exemplo04_ContaCorrenteAbstrata

constelacao02.parte03.classes.contacorrenteabstrata

ContaCorrente

ContaPoupanca

ContaMovimento

Banco

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

93

Questes de concursos
[CESPE 2011 CORREIOS Cargo 3] A respeito da orientao a
objetos, julgue o item subsequente.

[88] Uma classe capaz de instanciar um objeto de uma


classe abstrata, para utilizar seus mtodos e manipular seus
atributos.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

94

Questes de concursos
[CESPE 2011 CORREIOS Cargo 3] A respeito da orientao a
objetos, julgue o item subsequente.

[88] Uma classe no capaz de instanciar um objeto de uma


classe abstrata, para utilizar seus mtodos e manipular seus
atributos.

Gabarito: ERRADO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

95

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 37] Com relao
orientao a objetos, assinale a opo correta.

[A] Em geral, classes abstratas definem um conjunto de


funcionalidades que podem ou no ser especificadas e que
devem estar todas definidas, contendo ao menos um mtodo
concreto.
[B] Uma classe abstrata no pode ser instanciada, de forma
que no h objetos que possam ser construdos diretamente a
partir de sua definio.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

96

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 37] Com relao
orientao a objetos, assinale a opo correta.

[A] Em geral, classes abstratas definem um conjunto de


funcionalidades que podem ou no ser especificadas e que
devem estar todas definidas, contendo ao menos um no
precisando conter mtodo concreto.

Gabarito: ERRADO.

[B] Uma classe abstrata no pode ser instanciada, de forma


que no h objetos que possam ser construdos diretamente a
partir de sua definio.

Gabarito: CERTO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

97

Questes de concursos
[CESPE 2010 MPU Cargo 25] Com relao linguagem Java,
usada para projetar e manipular itens de dados complexos
(objetos), julgue o item.

[138] No cdigo em Java apresentado a seguir, a tentativa de


execuo da classe Principal resultar em erro, porque o
objeto p1 foi criado utilizando como tipo a classe abstrata
Conta.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

98

Questes de concursos
[CESPE 2010 MPU Cargo 25] Com relao linguagem Java,
usada para projetar e manipular itens de dados complexos
(objetos), julgue o item.

[138] No cdigo em Java apresentado a seguir, a tentativa de


execuo da classe Principal resultar em erro, porque o
objeto p1 foi criado utilizando como tipo a classe abstrata
Conta.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

99

Questes de concursos
[CESPE 2010 MPU Cargo 25] Com relao linguagem Java,
usada para projetar e manipular itens de dados complexos
(objetos), julgue o item.

[138] No cdigo em Java apresentado a seguir, a tentativa de


execuo da classe Principal resultar em erro, porque o
objeto p1 foi criado utilizando como tipo a classe abstrata
Conta.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

100

Questes de concursos
[CESPE 2010 MPU Cargo 25] Com relao linguagem Java,
usada para projetar e manipular itens de dados complexos
(objetos), julgue o item.

[138] No cdigo em Java apresentado a seguir, a tentativa de


execuo da classe Principal no resultar em erro, porque o
objeto p1 foi criado utilizando como tipo a classe abstrata
Conta.

Gabarito: ERRADO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

101

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 59]

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

102

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 59]

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

103

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 59] Analisando o cdigo ao
lado, verifica-se que o programa

[A] compila e executa imprimindo na sada padro C1 duas


vezes.
[B] compila e executa imprimindo na sada padro C2 e C3.
[C] no compila, pois classes abstratas no podem ser
instanciadas.
[D] no compila, pois h incompatibilidade de tipos em
atribuio.
[E] no compila, pois um vetor foi construdo de forma
incorreta.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

104

Questes de concursos
[CESGRANRIO 2010 Petrobrs Analista de Sistemas Jnior
Engenharia de Software Questo 59] Analisando o cdigo ao
lado, verifica-se que o programa

[A] compila e executa imprimindo na sada padro C1 duas


vezes.
[B] compila e executa imprimindo na sada padro C2 e C3.
[C] no compila, pois classes abstratas no podem ser
instanciadas.
[D] no compila, pois h incompatibilidade de tipos em
atribuio.
[E] no compila, pois um vetor foi construdo de forma
incorreta.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

105

Interfaces

No uma classe

um conjunto de requisitos para que classes possam se


adequar a ela

como se fosse um contrato ou padro

Descrever o que as classes devem fazer

Se a classe estiver em conformidade com uma interface, ento um


determinado servio ser realizado

Sem especificar como devem fazer

tambm um tipo de referncia como uma classe

Mas pode conter apenas:

Atributos estticos

Assinaturas de mtodos

Tipos aninhados
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

106

Interfaces

No possuem:

Atributos de instncia

Mtodos implementados

No podem ser instanciadas

Apenas podem ser:

Implementadas por classes

Estendidas por outras insterfaces

Todos os mtodos de uma interface so automaticamente


public

No necessrio usar esse modificador

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

107

Interfaces

No fazem parte de nenhuma hierarquia de classes

Embora as interfaces trabalhem em combinao com elas

Fornecem uma alternativa para herana mltipla na


linguagem de programao Java

Uma classe pode herdar de apenas uma outra classe

Mas pode implementar mais de uma interface

Uma interface pode herdar vrias outras interfaces

Os objetos podem ter vrios tipos:

Tipo de sua prpria classe

Tipos das suas classes ancestrais

Tipos de todas as interfaces que elas implementam


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

108

Interfaces
Object
Object
Persistivel
Persistivel

implcito
Casting implcito
Casting

explcito
Casting explcito
Casting

ExibivelXML
ExibivelXML

ContaCorrente
ContaCorrente

ContaPoupanca
ContaPoupanca

ContaMovimento
ContaMovimento

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

109

Interfaces

Na declarao de interfaces, temos:

Modificadores de acesso de nvel superior:

public

default

Palavra-chave interface

Nome da interface

Comea com letra maiscula por conveno

A nomeao segue as regras de nomeao de variveis

Lista de nomes das interfaces a serem estendidas

Se houver

A lista precedida pela palavra-chave extends

Os nomes so separados por vrgulas

Uma interface pode estender mais de uma interface


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

110

Interfaces

Na declarao de interfaces, temos:

Corpo da interface

Envolvido por chaves {}

Contm declaraes de mtodos

Pode conter declaraes de variveis finais

Todas as variveis em uma interface so implicitamente:


public
static
final
Esses modificadores podem ser omitidos

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

111

Interfaces

Na declarao de mtodos das interface, temos:

A declarao seguida por um ponto e vrgula

No h chaves {}

Todos os mtodos declarados em uma interface so


implicitamente public

No h implementao dos mtodos de interface

Esse modificador pode ser omitido

Uma classe que implementa uma interface:

Deve implementar todos os mtodos

Pode no implementar todos os mtodos

Ela dever se tornar uma classe abstrata

As suas classes descendentes devem implementar os mtodos


rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

112

Interfaces

Exemplos:

Interface

public interface Persistivel {

String insere();

Classe que implementa a interface:

public class Classe implements Persistivel {

@Override

public String insere() {

return "INSERT INTO Tabela VALUES (Valor1, Valor2);";

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

113

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

114

Hora de praticar

constelacao02.parte03

Exemplo05_ContaCorrenteInterfaces

constelacao02.parte03.classes.contacorrenteinterfaces

ContaCorrente

ContaPoupanca

ContaMovimento

Banco

constelacao02.parte03.classes.interfaces

ExibivelXML

Persistivel

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

115

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 37] Com relao
orientao a objetos, assinale a opo correta.

[C] A sintaxe para a definio de classes diferencia-se da


sintaxe para a declarao de uma interface em razo de o seu
corpo definir apenas assinaturas de mtodos e constantes.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

116

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 37] Com relao
orientao a objetos, assinale a opo correta.

[C] A sintaxe para a definio de classes diferencia-se da


sintaxe para a declarao de uma interface em razo de o seu
do corpo desta definir apenas assinaturas de mtodos e
constantes.

Gabarito: ERRADO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

117

Questes de concursos
[CESPE 2010 DETRAN/ES Cargo 3] A respeito da orientao a
objetos e das respectivas linguagens de programao, julgue o
item subsequente.

[75] A herana de interfaces consiste no nico caso de


herana mltipla permitida a uma classe em Java, visto que,
em geral, no possvel que uma classe pai tenha o mesmo
nome de mtodo de outra classe pai.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

118

Questes de concursos
[CESPE 2010 DETRAN/ES Cargo 3] A respeito da orientao a
objetos e das respectivas linguagens de programao, julgue o
item subsequente.

[75] A herana de interfaces consiste no nico caso de


herana mltipla permitida a uma classe em Java, visto que,
em geral, no possvel que uma classe pai tenha o mesmo
nome de mtodo de outra classe pai.

Gabarito: CERTO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

119

Questes de concursos
[CESGRANRIO 2012 CMB Assistente Tcnico Administrativo
Programador de Computador] Uma diferena entre classe e
interface que a classe

[A] pode ter um campo de dados, enquanto a interface no.


[B] pode ser implementada em uma interface, enquanto a
interface no pode ser implementada em uma classe
[C] usada apenas em applets, enquanto a interface usada
apenas em aplicativos dedicados.
[D] catalogada em pacotes, enquanto a interface no.
[E] declara e implementa seus mtodos, enquanto a interface
apenas declara.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

120

Questes de concursos
[CESGRANRIO 2012 CMB Assistente Tcnico Administrativo
Programador de Computador] Uma diferena entre classe e
interface que a classe

[A] pode ter um campo de dados, enquanto a interface no.


[B] pode ser implementada em uma interface, enquanto a
interface no pode ser implementada em uma classe
[C] usada apenas em applets, enquanto a interface usada
apenas em aplicativos dedicados.
[D] catalogada em pacotes, enquanto a interface no.
[E] declara e implementa seus mtodos, enquanto a interface
apenas declara.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

121

Questes de concursos
[CESGRANRIO 2012 Petrobrs Tcnico de Explorao de
Petrleo Jnior Informtica] Ao escrever o cdigo da Classe
PortaDeCofre em Java para que ela atenda a interface Porta,
como um programador deve comear a declarao da classe?

[A] public classe Porta:PortaDeCofre {

[B] public classe PortaDeCofre :: Porta {

[C] public classe PortaDeCofre inherits Porta {

[D] public classe PortaDeCofre extends Porta {

[E] public classe PortaDeCofre implements Porta {

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

122

Questes de concursos
[CESGRANRIO 2012 Petrobrs Tcnico de Explorao de
Petrleo Jnior Informtica] Ao escrever o cdigo da Classe
PortaDeCofre em Java para que ela atenda a interface Porta,
como um programador deve comear a declarao da classe?

[A] public classe Porta:PortaDeCofre {

[B] public classe PortaDeCofre :: Porta {

[C] public classe PortaDeCofre inherits Porta {

[D] public classe PortaDeCofre extends Porta {

[E] public classe PortaDeCofre implements Porta {

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

123

Interfaces e classes abstratas


Interfaces

Classes abstratas

Podem ser instanciadas

No

No

Herana mltipla

Podem estender mais de


uma interface

No podem estender mais


de uma classe

Implementa interfaces

No

Podem implementar mais


de uma

Variveis

Apenas variveis com


modificadores public, static
e final

Podem ter variveis de


instncia, estticas e finais

Mtodos

Apenas mtodos pblicos e


abstratos

Podem conter mtodos


abstratos, como tambm de
instncia e estticos

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

124

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 37] Com relao
orientao a objetos, assinale a opo correta.

[D] Uma classe abstrata no tem, obrigatoriamente, um corpo


associado, podendo apenas incluir atributos de objetos e
definio de mtodos, pblicos ou no. Uma interface Java,
por sua vez, para que seja abstrata, necessita somente ser
declarada como tal.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

125

Questes de concursos
[CESPE 2010 SECGEP/PE Cargo 3 Questo 37] Com relao
orientao a objetos, assinale a opo correta.

[D] Uma classe abstrata no tem, obrigatoriamente, um corpo


associado, podendo apenas incluir atributos de objetos e
definio de mtodos, pblicos ou no. Uma interface Java,
por sua vez, para que seja abstrata, necessita somente ser
declarada como tal.

Gabarito: ERRADO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

126

Operador instanceof

chamado de operador de comparao de tipo

Testa se um objeto instncia de:

Uma classe

Uma subclasse

Uma classe que implementa uma interface particular

Sintaxe:

objeto instanceof Classe

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

127

Operador instanceof
veiculo
veiculo

Veiculo
Veiculo

Carro
Carro

Acelerar
Acelerar

carro
carro
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

128

Questes de concursos
[ESAF 2008 CGU Analista de Finanas e Controle
Desenvolvimento de Sistemas Questo 23] Com relao
linguagem de programao Java, correto afirmar que

[A] o operador instanceof utilizado para chamar o mtodo


construtor de uma classe e criar um novo objeto.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

129

Questes de concursos
[ESAF 2008 CGU Analista de Finanas e Controle
Desenvolvimento de Sistemas Questo 23] Com relao
linguagem de programao Java, correto afirmar que

[A] o operador instanceof new utilizado para chamar o


mtodo construtor de uma classe e criar um novo objeto.

Gabarito: ERRADO.

Veiculo veiculo = new Veiculo();

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

130

Questes de concursos
[CESPE 2012 BASA Cargo 17] Julgue o item seguinte, acerca da
linguagem de programao Java.

[99] O operador instanceof s pode ser usado para testar


valores null.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

131

Questes de concursos
[CESPE 2012 BASA Cargo 17] Julgue o item seguinte, acerca da
linguagem de programao Java.

[99] O operador instanceof s pode ser usado para testar


valores null.

Gabarito: ERRADO.

instanceof

chamado de operador de comparao de tipo

Testa se um objeto instncia de:

Uma classe

Uma subclasse

Uma classe que implementa uma interface particular

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

132

Respostas dos desafios

[RGA] A linguagem Java no suporta a herana mltipla.

[RGA] Na ausncia de qualquer outra superclasse explcita,


cada classe implicitamente uma subclasse de Object.

Gabarito: ERRADO.

Gabarito: CERTO.

[RGA] Na linguagem Java, uma subclasse herda todos os


membros acessveis de sua superclasse, inclusive no
incluindo os construtores desta.

Gabarito: ERRADO.

Construtores no so membros de uma classe

Construtores da superclasse:

No so herdados por subclasses

Podem ser chamados a partir da subclasse

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

133

Respostas dos desafios

[RGA] Subclasse no mesmo pacote da sua superclasse herdar


da superclasse os membros com os nveis:

public

protected

default

[RGA] Subclasse em pacote diferente da sua superclasse


herdar da superclasse os membros com os nveis:

public

protected

[RGA] A subclasse tambm no herda os membros privados


da sua superclasse.

Gabarito: ERRADO.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

134

Respostas dos desafios

[RGA] O que so mtodos sobrescritos?

So mtodos de instncia herdados que foram reescritos na


subclasse

Alterando o comportamento deles

Substituindo eles

[RGA] Quando acontece um mtodo ocultado?

Um mtodo da subclasse oculta o da superclasse quando o


mtodo esttico da subclasse possui a mesma assinatura da
mtodo esttico da superclasse

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

135

Respostas dos desafios

[RGA] Um mtodo pblico de uma superclasse no pode ser


sobrescrito em uma subclasse como protected.

Gabarito: ERRADO.
O modificador de acesso de um mtodo sobrescrito ou oculto
deve ser igual ou mais liberal ao mtodo da superclasse

[RGA] Um mtodo de instncia de uma superclasse no pode


ser sobrescrito em uma subclasse como mtodo esttico.

Gabarito: ERRADO.

Haver erro de compilao se houver a tentativa de mudar:

Um mtodo de instncia na superclasse para um mtodo esttico


na subclasse

Um mtodo esttico na superclasse para um mtodo de instncia


na subclasse
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

136

Respostas dos desafios

[RGA] O que casting implcito de objetos? E o que casting


explcito?

Acontece casting implcito quando uma varivel-objeto de uma


classe ancestral referencia um objeto instncia de uma das
classes descendentes da hieraquia
Acontece casting explcito quando uma varivel-objeto de uma
classe descendente referencia um objeto instncia de uma das
classes ancestrais da hieraquia

[RGA] Quando acontece a ligao prematura? E a tardia?

Acontece a ligao prematura quando o mtodo a ser invocado


em tempo de compilao do programa
Acontece ligao tardia quando o mtodo a ser invocado em
tempo de execuo do programa
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

137

Respostas dos desafios

[RGA] Quais so os casos na linguagem Java que no


acontecem a ligagao tardia?

Nos casos:

Mtodos declarados como:

private
final

static

Construtores

[RGA] Quando um atributo de uma subclasse oculta um


atributo de sua superclasse?

Quando o atributo da subclasse possui a mesmo nome da


atributo da superclasse mesmo que sejam de tipos diferentes

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

138

Respostas dos desafios

[RGA] Quais so as formas de evitar herana?

Classes com o modificador final

Mtodos com o modificador final

Torna o mtodo impossvel de ser sobrescrito

[RGA] Uma classe abstrata deve no precisa ter todos seus


mtodos abstratos.

Torna uma classe impossvel de ser estendida

Gabarito: ERRADO.

[RGA] Todos os mtodos de uma interface so


automaticamente public.

Gabarito: CERTO.

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

139

Respostas dos desafios

[RGA] As interfaces fornecem uma alternativa para herana


mltipla na linguagem de programao Java.

Gabarito: CERTO.

[RGA] Quais os tipos um objeto pode ter?

Tipo de sua prpria classe

Tipos das suas classes ancestrais

Tipos de todas as interfaces que elas implementam

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

140

Respostas dos desafios

[RGA] Todas as variveis em uma interface so implicitamente:

public

static

final

[RGA] Todos os mtodos declarados em uma interface so


implicitamente:

public

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

141

Referncias

Apostila Java e Orientao a Objetos da Caelum:


http://www.caelum.com.br/download/caelum-java-objetosfj11.pdf
Apostila Java e Orientao a Objetos da K19:
http://www.k19.com.br/downloads/apostilas/java/k19-k11orientacao-a-objetos-em-java
HORSTMANN, Cay S. e CORNELL, Gary. Core Java Volume I Fundamentos. 8 Edio. Editora Pearson Prentice Hall, 2010.
Interfaces X Classes Abstratas:
http://www.devmedia.com.br/interfaces-x-classesabstratas/13337
Orientao a Objetos com Java:
http://www.slideshare.net/regismelo/orientao-a-objetoscom-java
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

142

Referncias

Polimorfismo, Classes abstratas e Interfaces: Fundamentos da


POO em Java: http://www.devmedia.com.br/polimorfismoclasses-abstratas-e-interfaces-fundamentos-da-poo-emjava/26387
SIERRA, Kate e BATES, Bert. Certificao Sun para
Programador e Desenvolvedor em Java 2 Guia de Estudos. 3
Edio. Editora Alta Books, 2003.
The Java Language Specification - Java SE 7 Edition:
http://docs.oracle.com/javase/specs/jls/se7/html/
The Java Tutorials - Interfaces and Inheritance:
http://docs.oracle.com/javase/tutorial/java/javaOO/

rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com

143

Potrebbero piacerti anche