Duvida

Um colega de trabalho lançou uma questão aqui:

Sendo que isso é no Java 5. Alguem sabe a resposta correta?

VELO

Se o homem tem HUM melhor amigo que é um CÃO, a resposta seria a D. Mas não tem pegadinha ai não né ? :smiley:

Acredito que dependendo da finalidade deste código, mais de uma alternativa é válida.

“Apropriado” pra mim é aquilo que resolve o meu problema…

[quote=s4nchez]Acredito que dependendo da finalidade deste código, mais de uma alternativa é válida.

“Apropriado” pra mim é aquilo que resolve o meu problema…[/quote]

Na verdade você teria no máximo duas alternativas, as duas primeiras jã caem fora, um “Homem” não extende (ou herda, como queiram) nem implementa um “Cão”, e a E e a F não compilam.

Resta assim a C e a D.

A C não é algo claro. Bestfriend poderia ser uma interface ou uma classe abstrata, que o cão poderia implementar ou extender, vamos dizer assim. Mas não tem como saber se isto foi feito. E dessa forma um Elefante pode implementar ou herdar, e mesmo assim poderia ser o melhor amigo do “Homem”, não respondendo a pergunta corretamente.

Mas claro, Bestfriend poderia ser um classe concreta, mas ela é um representa um Cão? Fica sinistro, não da certo.

Sobra a D, que é a alternativa mais fiél, o “Homem” agrega HUM “Cão”. Já é o suficiente pra esclarecer o relacionamento.

Vamos lá. Acho que a rigor nenhuma das alternativas está correta.

A) class Man extends Dog {}
= Homens são cães

B) class Man implements Dog {}
= Homens são, entre outros atributos, cães (pergunte isso para qualquer mulher :stuck_out_tongue: )

C) class Man { private Bestfriend dog; }
= Homens têm um melhor amigo // não é porque o nome da variável é “dog” que deve haver um “dog” nessa variável
O correto seria algo como:
class Man { private Bestfriend friend = new Dog(); }
= Homens têm um melhor amigo que é um cão

Aqui suponho que “Dog implements Bestfriend”

D) class Man { private Dog bestfriend; }
= Homens têm um cão

E) class Man { private Dog <bestfriend>; }
= Sintaxe inválida

F) class Man { private BestFriend <dog>; }
= Sintaxe inválida

Bom eu também escolhi a C.

class Man { //O homem 
private Bestfriend //tem um melhor amigo
dog; //? soh não há como provar que ele é um cão! mas ele deve implementar uma interface Bestfriend
}

NDA!
Estou com o Thingol, teria que ser assim:
class Man { private Bestfriend friend = new Dog(); }
= Homens têm um melhor amigo que é um cão