Pegadinha

ola galera sem testar alguem sabe essa resposta bem di cara :smiley:

interface A{ void x();}
 abstract class B{
  abstract void x();
}
class C extends B implements A{
   
   //insira aqui codigo aqui 
       
    
 
} 

1)final void x(){}
2)int void x(){}
3)private void x(){}
4)protected void x(){}
5)public void x(){}

para nao dar erro de compilacao qual melhor opcao,quyal metodo deve ser implementado??

creio q a opcao 5 seja a correta

uhmm…
e pq???

Opção 5. Porque para sobrescrever um método o modificador de acesso não pode ser mais restritivo, mas pode ser mais abrangente, logo pode ser public opção 5.

Olá pessoal
A alternativa que responde a pergunta feita é a 5 (cinco)
Por definição da jpc o atributo ou método que não for especificado o acesso será considerado
público…

flwsss…
at+

isso ai!!alguem tem mais?

Os métodos na interface são implicitamente public, por isso a resposta só pode ser a 5.

só pode ser a 5.

Resposta: 5. Mas só resta saber se ele ta implementando o método da interface ou da classe.

Na minha opnião ta implementando o metodo da classe abstrata que a primeira classe concreta que herdar da classe abstrata tem que implementar o método.

Alguêm mais discorda ou concorda?

[quote=anderson.bonavides]Resposta: 5. Mas só resta saber se ele ta implementando o método da interface ou da classe.

Na minha opnião ta implementando o metodo da classe abstrata que a primeira classe concreta que herdar da classe abstrata tem que implementar o método.

Alguêm mais discorda ou concorda?[/quote]

cara eu ja penso que é da inteface pois se vc colocar
como protected void x (){} nao aceita me parece que o modificador de acesso da inteface por ser publico implicitamente pesa mais.
Mas realmente nao aposterei mais que 10 reais,fiquei na dúvida… :smiley:

Ainda continuo achando que é da classe Abstract.

:wink:

[quote=anderson.bonavides]Resposta: 5. Mas só resta saber se ele ta implementando o método da interface ou da classe.

Na minha opnião ta implementando o metodo da classe abstrata que a primeira classe concreta que herdar da classe abstrata tem que implementar o método.

Alguêm mais discorda ou concorda?[/quote]

Vejo da seguinte forma

Quando na Classe C extendemos B e implementamos A, estamos dizendo que deve existir a declaração do método “x”, ou seja a declaração do método “x” na Classe C resolve o extends e o implements.

Certo :?:

[quote=carlospia][quote=anderson.bonavides]Resposta: 5. Mas só resta saber se ele ta implementando o método da interface ou da classe.

Na minha opnião ta implementando o metodo da classe abstrata que a primeira classe concreta que herdar da classe abstrata tem que implementar o método.

Alguêm mais discorda ou concorda?[/quote]

Vejo da seguinte forma

Quando na Classe C extendemos B e implementamos A, estamos dizendo que deve existir a declaração do método “x”, ou seja a declaração do método “x” na Classe C resolve o extends e o implements.

Certo :?: [/quote]

Certissimo. Mas a discurção levantada por mim não é essa. A discurção levantada por mim é saber se o método vem da interface ou da classe. Essa é a grande sacada. Mas não deixa dúvida que o problema está resolvido.

:wink:

[quote=thiago.filadelfo]Olá pessoal

atributo ou método que não for especificado o acesso será considerado
público…

flwsss…
at+[/quote]

Cara vc está precisando rever uns conceitos mais que básicos… me diz uma coisa: se minha classe tiver em outro pacote acessando um atributo PADRÃO (esté é o acesso quando não se especifica nada :!: ) ela vai conseguir :?: :?: :?:

[quote=anderson.bonavides ]Olá pessoal

Certissimo. Mas a discurção levantada por mim não é essa. A discurção levantada por mim é saber se o método vem da interface ou da classe. Essa é a grande sacada. Mas não deixa dúvida que o problema está resolvido.

flwsss…
at+[/quote]

Cara minha opinião que é da classe abstrata, na ordem da declaração primeiro extends depois vem o implements…
mas se alguém puder esclarecer melhor a resposta certa desta dúvida…

  1. por causa da simples regra que quando o metodo é subscrito ele nao pode ser menos restritivo que o metodo da superclasse… e na o void x(); ele é public… :smiley: implicitamente na interface.

flw!

Creio eu que primeiro implement e depois extends!

Pois se tu tiver que implementar os métodos da classe abstrata, obrigatóriamente teria que ser DEFAULT e ai tu não iria implementar a interface pois não permitiria métodos mais restritos (método interface PUBLIC), ai com certeza NÃO COMPILARIA!

O correto realmente seria a opção 5, o método satisfaria o acesso de ambos ! :wink:

[quote=LPJava]5) por causa da simples regra que quando o metodo é subscrito ele nao pode ser menos restritivo que o metodo da superclasse… e na o void x(); ele é public… :smiley: implicitamente na interface.

flw![/quote]

Já pensou pelo sentido de que a primeira classe concreta que herda de uma classe abstrata deve implementar seu método abstrato?

:wink:

Já pensou pelo sentido de que a primeira classe concreta que implementa uma interface deve implementar seu método abstrato?

Agora temos que consultar na específicação e ver quem tem prioridade, se a mesma existe.

Mas no caso relatado acima, com certeza a opção 5 é a única indicada, pois seria a satisfatória!

Essa realmente está fods de chegar num veredicto… Vejamos bem… você colocar o método public responde a questão… mas alguém tentou colocá-lo mais restritivo ?? o Compilador vai fazer a verificação do prioritário primeiro… o erro vai acusar se quem tem mais prioridade é a Abstract class ou a Interface… Não sei se vai colar, mas na teoria é pra dar certo…

Falows 8)

:frowning:
O compilador diz que são tipos imcompatíveis.