Respostas (SCJP)

4 respostas
cs.santos0

Iai pessoal, blz?

To estudando pra certificação, porem no capitulo 2 do livro da kate sierra, faltam 4 respostas, será que vcs poderiam me ajudar??

ai vai:

12. Dado o código a seguir,
interface DoMath{
double getArea(int rad);
}

interface MathPlus{
double getVol(int b, int h);
}

que dois trechos inseridos na linha 7 e 8 seriam compilados? (Selecione duas).

A. class AllMath extends DoMath{
public double getArea(int r);}

B. interface AllMath implements MathPlus{
public double getVol(int x, int y);}

C. interface AllMath extends DoMath{
public float getAvg(int h, int l);}

D. class AllMath implements MathPlus{
public double getArea(int rad);}

E. abstract class AllMath implements DoMath, MathPlus{
public double getArea(int rad){ return rad * rad * 3.14; }}

13. Três das opções são assinaturas de metodo válidas em uma interface. Quais? (Selecione 3)

A.private int getArea();
B.public float getVol(float x);
C.public void main(String[] args);
D.public static void main(String[] args);
E.boolean setFlag(Boolean [] test []);

14. Duas instruções são verdadeiras paa qualquer classe concreta que implemente a interface java.lang.Runnable. Quais? (Selecione Duas).

A. Você pode estender a interface Runnable, contanto que sobrecarregue o método public run().
B. A classe deve conter um método chamado run(), a partir do qual todo o código desse thread será iniciado.
C. A classe deve conter um método vazio public void chamado run().
D. A classe deve conter um método public void chamado runnable().
E. A definição da classe deve incluir as palavras implements Threads e conter um método chamado run().
F. O método obrigatório tem que ser public, com tipo de retorno void, devendo se chamar run() e não pode ter nenhum argumento.

15. Dado o código,

interface Base{
boolean m1();
byte m2(short s);
}

quais os dois trechos que serão compilados? (Selecione dois)

A.interface Base2 implements Base{}

B.abstract class Class2 extends Base{
public boolean m1(){ return true; }

C.abstract class Class2 implements Base{}

D.abstract class Class2 implements Base{
public boolean m1() { return (7>4); }}

E.class Class2 implements Base{
boolean m1() { return false; }
byte m2(short s){ return 42; } }

Sendo que as minha respostas foram:
12. C,E
13. B,C,E
14. B,F
15. C,D

OBS: a questão 15 eu fiquei em dúvida entre a C e E, alguem pode me esclarecer qual é certa?
Será que vcs podem me falar quais são as certas?

flw, um abraço.

4 Respostas

Raff

Cara na sua pergunta sobre a questão 15, a E não está correta mesmo por que uma interface, o modificador de acesso dela é sempre public…e quando você implemento a interface Base na Classe2, foi modificado o modificador de acesso para default. Tipo era public (era visivel para todos), só que dai voce coloca o modificador com default(que só pode ser visualizado no mesmo package…)… Bom amigo espero que tenha te exclarecido!!

cs.santos0

vlw pela ajuda cara, deu uma clareada, mas ñ completamente, oq faz a interface virar default?

e as outras questões tem como alguem dar uma ajuda?

vlw

R

oi,

fiz todas as questoes e minhas respostas deram iguais as suas, então acho que sua única dúvida seja essa que vc colocou (entre C e E da questão 15) e vou tentar explicá-la de maneira q vc possa entender:

Todos os métodos das interfaces são implicitamente public e abstract… então, mesmo que no código os métodos da interface Base não tenham modificador de acesso (o que significaria que seu acesso é default), o real modificador deles é public

Uma outra regra diz que ao implementar/sobrescrever métodos não podemos tornar o modificador de acesso mais restritivo, isto é, se o método era public ele não pode ser protected, private, nem de acesso default (as outas combinações do que não é possível acho q vc consegue deduzir).

Então, como o Raff falou, a letra E não está correta porque na implementação da classe, a assinatura dos métodos estão sem modificador de acesso, o que quer dizer que a classe está tentando implementar a interface Base, cujos métodos são public e está tentando restringir seus modificadores de acesso para default e, por isso, gera um erro de compilação e a resposta correta da questão 15 é [C, D].

Se tiver mais alguma dúvida, estamos aê.

[]'s

cs.santos0

Blz cara, vlw msm hein.

entendi perfeitamente onde estava o erro, entendi por completo o uso de interfaces. Agora retomar meu estudo q falta mto ainda… :shock:

vlw

Criado 8 de setembro de 2007
Ultima resposta 8 de set. de 2007
Respostas 4
Participantes 3