Simples, mas complica!

6 respostas
M

Achei essa questão do simulado whizlabs muito interessante.
Aparentemente parece fácil, mas acaba derrubando.

package cloners;

class Circle{

int radius;

Circle(int radius){

this.radius=radius;

}
protected Object clone(){

return new Circle(radius);

}

int getRadius(){

return radius;

}

}
class CloneTest{

public static void main(String args[]){

Circle circle1=new Circle(5);

Circle circle2=(Circle)circle1.closne();

System.out.print(circle2.getRadius);

Object ob=new Circle(6);

Object ob1=ob.clone();

System.out.println(((Circle)ob1).getRadius());

}}

6 Respostas

bcartaxo

Qual a pergunta?

W

e sem a pergunta fica dificil mesmo Oo ,
alias tem um erro de escrita ali ta closne invez clone, mas deve ser erro de digitação seu…

M

Desculpe:
As alternativas são:

A - Compiler error - clone() must be public in class Circle
B - Prints 56
C - Prints 50
D - Prints 06
E - Prints 00
F - None of these

bcartaxo

Acredito q seja 56. É isso?

M

Letra F.

O método clone é subscrito da classe Object.

E ao criar uma referencia do Tipo Object ob=new Circle(6),

a referencia ob não tem visibilidade do método clone da classe object, pois o método é protected e não pode ser acessado por uma referencia em outro pacote, só pode se acessado através da herança.

OK

bcartaxo

ê lê lê =PP

Típica questão de certificação. É vero, eles escondem pra o kra se arrombar mesmo.

Mas não é nem q ele n tenha visibilidade do método clone da classe object, até pq se ele tivesse a visibilidade ele chamria polimorficamente o sobrescrito na classe Circle. É q realmente ele n enxerga o método clone fora do pacote sem ser por herança como vc disse.

Eh foda mesmo =p

Criado 6 de julho de 2007
Ultima resposta 6 de jul. de 2007
Respostas 6
Participantes 3