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.
doug
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+
F
fabioEM
isso ai!!alguem tem mais?
gugaa_df
Os métodos na interface são implicitamente public, por isso a resposta só pode ser a 5.
leandrokjava
só pode ser a 5.
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?
F
fabioEM
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?
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…
anderson.bonavides
Ainda continuo achando que é da classe Abstract.
C
carlospia
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?
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 :?:
anderson.bonavides
carlospia:
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?
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 :?:
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.
Javabuntu
thiago.filadelfo:
Olá pessoal
atributo ou método que não for especificado o acesso será considerado
público…
flwsss…
at+
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 :?: :?: :?:
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+
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…
LPJava
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… implicitamente na interface.
flw!
mateusbrum
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 !
anderson.bonavides
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… implicitamente na interface.
flw!
Já pensou pelo sentido de que a primeira classe concreta que herda de uma classe abstrata deve implementar seu método abstrato?
mateusbrum
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!
adriano_si
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)
mateusbrum
O compilador diz que são tipos imcompatíveis.
victorwss
É o método público (opção 5). Na interface, todos os métodos são implicitamente públicos. Logo para ele ser implementado pela classe C ele tem que ser público.
Quanto a questão de se o método está implementando da interface ou se está sobrescrendo da classe abstrata, na verdade está ocorrendo as duas coisas ao memo tempo. Ele está sobrescrevendo da classe abstrata E implementando da interface.
Sami_Koivu
Perfeito.
Acho que você quis dizer o oposto. Ele não pode ser mais restritivo do que o método da superclasse.
[]s,
Sami
D
DaviPiala
Resposta 5
É da interface pois há interface obriga que o o metodo implementado seja público, a classe abstrata permite que o método continue como default.
anderson.bonavides
DaviPiala:
Resposta 5
É da interface pois há interface obriga que o o metodo implementado seja público, a classe abstrata permite que o método continue como default.
Essa sim para mim foi uma boa resposta. Porem será que ta correto mesmo?
rs
adriano_si
então se houvesse um método void x() na Classe abstrata e o mesmo método na Interface quando sobrescrevermos esse método, ele sobrescreverá os 2 ?? Realmente tem muita lógica, afinal como os 2 são obrigatórios, se fosse realmente pra satisfazer um primeiro e outro depois, teríamos que ter 2 métodos iguais… o que é impossível de acontecer… é a explicação mais lógica até agora sem sombra de dúvidas, mas alguém tem algum material (na Web mesmo) que possa nos garantir isso pra não restar mais dúvidas ??
Falows
Sami_Koivu
O melhor exemplo que achei trata-se de um caso de implementar duas interfaces com métodos com assinaturas iguais. É um caso diferente, mas ao meu ver completamente comparável.
It is permitted for a single method declaration in a class to implement methods of more than one superinterface. For example, in the code:
interface Fish { int getNumberOfScales(); }
interface Piano { int getNumberOfScales(); }
class Tuna implements Fish, Piano {
// You can tune a piano, but can you tuna fish?
int getNumberOfScales() { return 91; }
}
the method getNumberOfScales in class Tuna has a name, signature, and return type that matches the method declared in interface Fish and also matches the method declared in interface Piano; it is considered to implement both.
F
fabioEM
Legal todo mundo esta afiadissimo!Acho interessante postar aqui esse tipo de assunto especialmente para aqueles que como eu estão preste a fazer a prova,assim podemos discutir,discutir, ate dominar o assunto.Entao sem compilar de cara o que mostrar abaixo??
Na minha opnião vai dar erro de compilação ou será causado algum exceção em tempo de execução.
Primeiro vc serealiza em a instância de Carro c. O que será serealizado será Ferrari, e uma meta informação da classe, ou seja, o nome da classe d Dono. Depois vc disse que c2 receberá uma nova serealização e tenta ler nessa nova serealização.
Mas não tenho certeza quano se trata de Genéricos, serealização e Threads.
:roll:
F
fabioEM
anderson.bonavides:
:roll:
Esta é uma questao só mesmo sobre serializacao e muita aencao estamos aqui serializando 2 objectos
olha com atencao a linha 32.
F
fabioEM
anderson.bonavides:
Na minha opnião vai dar erro de compilação ou será causado algum exceção em tempo de execução.
Primeiro vc serealiza em a instância de Carro c. O que será serealizado será Ferrari, e uma meta informação da classe, ou seja, o nome da classe d Dono. Depois vc disse que c2 receberá uma nova serealização e tenta ler nessa nova serealização.
Mas não tenho certeza quano se trata de Genéricos, serealização e Threads.
:roll:
Cara c2 recebe uma deserializacao e nao uma serializacao cuidado…
anderson.bonavides
Quando se trata de Serealização ainda sou infantil
D
DaviPiala
Ferrari e Fabio.
Cara prestei atenção na questão e não vi nada estranho nela.
F
fabioEM
DaviPiala:
Ferrari e Fabio.
Cara prestei atenção na questão e não vi nada estranho nela.
Justamente cara nao tinha nada de estranho era para saber logo o que imprime,so isso.
protected final void x(Object … x){ System.out.println("Superclasse);}
nenhuma delas
qualquer uma delas
Tu copiou as saídas erradas. Pode levar em consideração que estão corretas?
isso mesmo so as que estao corretas,quais para ti?
anderson.bonavides
Fabio presta atenção nos System.out.println("Superclasse); ta faltando o ". É isso que to perguntando.
Raff
para mim somente a numero 1…
so que eu não entendi muito bem o que você queria quem imprimisse
!!!
Raff
na verdade pode tanto ser a numero 1 ou a numero 5 é isso !!!
F
fabioEM
anderson.bonavides:
Fabio presta atenção nos System.out.println("Superclasse); ta faltando o ". É isso que to perguntando.
cara com certeza desculpas agora coloquei “” que faltava
Raff
iai e a resposta fabioEM ???
F
fabioEM
Raff:
para mim somente a numero 1…
so que eu não entendi muito bem o que você queria quem imprimisse
!!!
Pior que a 1 nao pode pq vc nao vai conseguir chamar um metodo sobrecarregado para o proposito da questão.Se colocar 1) void x(Integer…x){ System.out.println("Superclasse);} no código
vai acontecr o seguinte:
cara só a 3) e a 4) mesmo
o importante nesse código é lembrar as regras de sobrescricao e de sobrecarga lembra a sobrecarga faz com que a variavel de referencia chame o metodo ja a sobrescricao faz com que o objeto chame o metodo :lol:
valeu se alguem tivei mais
Raff
não entendi por que a 1) está errada !!! ela está certa no meu ponto de vista
anderson.bonavides
fabioEM:
cara só a 3) e a 4) mesmo
o importante nesse código é lembrar as regras de sobrescricao e de sobrecarga lembra a sobrecarga faz com que a variavel de referencia chame o metodo ja a sobrescricao faz com que o objeto chame o metodo :lol:
valeu se alguem tivei mais :D
fabioEM não entendi bulhufas da sua explicação. O meu chutometro ia acertar em cheio a de número 3. Essa qustão envolve classes internas anônimas então da uma força ai e da uma explicação melhor se possivel?
Raff
cara para mim a 1,3,4 estão certas!
anderson.bonavides
Raff de fato a opção 1 está errada. Compilei e o resultado foi realmente 3 e 4.
F
fabioEM
:oops:
anderson.bonavides:
fabioEM:
cara só a 3) e a 4) mesmo
o importante nesse código é lembrar as regras de sobrescricao e de sobrecarga lembra a sobrecarga faz com que a variavel de referencia chame o metodo ja a sobrescricao faz com que o objeto chame o metodo :lol:
valeu se alguem tivei mais :D
fabioEM não entendi bulhufas da sua explicação. O meu chutometro ia acertar em cheio a de número 3. Essa qustão envolve classes internas anônimas então da uma força ai e da uma explicação melhor se possivel?
como vc pode ver temos um exemplo de sobrecarga
fazendo A a=new B(); a.x(2,3); estou chamando o metodo da classe A pois trata-se de sobrecarga,na verdade esta pegadinha testa 2 coisas:
classe anonima e sobrecarga
se ainda nao fui claro pode falar,realmente para explicacoes sou pessimo!
antraceno
fabioEM:
ola galera sem testar alguem sabe essa resposta bem di cara
para nao dar erro de compilacao qual melhor opcao,quyal metodo deve ser implementado??
acho que é a opção 5
Raff
Caro amigo de um olhada nesse codigo e repare na regra da subcrição.....
publicclassTeste1{voidgo(Integer...a){System.out.println("Ola ");}//outra classpublicclassTeste2extendsTeste1{publicvoidgo(Integer...a){System.out.println("Iai cara");// quer dizer que isso não é uma subrscrição válida ?}}}
F
fabioEM
Raff:
Caro amigo de um olhada nesse codigo e repare na regra da subcrição.....
publicclassTeste1{voidgo(Integer...a){System.out.println("Ola ");}//outra classpublicclassTeste2extendsTeste1{publicvoidgo(Integer...a){System.out.println("Iai cara");// quer dizer que isso não é uma subrscrição válida ?}}}
Para quem é essa mensagem?não entendi?
F
fabioEM
antraceno:
acho que é a opção 5
isso cara!
Raff
fabioEM:
Raff:
Caro amigo de um olhada nesse codigo e repare na regra da subcrição.....
publicclassTeste1{voidgo(Integer...a){System.out.println("Ola ");}//outra classpublicclassTeste2extendsTeste1{publicvoidgo(Integer...a){System.out.println("Iai cara");// quer dizer que isso não é uma subrscrição válida ?}}}
Para quem é essa mensagem?não entendi?
era para você fabião !!!!!!! :)
anderson.bonavides
Raff ele não quiz dizer qual era a opção que compilava ele quiz dizer qual era a opção que imprimia superclasse. A opção 1 compila mas não imprime superclasse e sim Integer … x.
Fabio pq Object que é a opção 4 foi chamado primeiro que Integer até onde eu sabia e pensava q estava correto é que Object vinha depois de Integer e depois de Number.
classConver{protectedfinalvoidx(int...o){//tenta mudar para String vai dar erroSystem.out.println("Object ... x");}}classConver2extendsA{publicvoidx(Double...x){System.out.println("Integer ... x");}}publicclassMain{Convera=newConver2(){//OBSERVACAO};voidy(){a.x(2,3);}publicstaticvoidmain(String[]args){newMain().y();}}
OBSEVACAO: chamada é por referencia vai chamar o metodo que esta em Conver ou seja na superclasse!!tenta mudar o paramentro do metodo da super classe para String vai dar erro!
espero ter te ajudado na compressao
M
mmartinsrj
Resposta: 5 pois os métodos de Interface são implicitamente public
Agora… Qual foi sobrescrito?? Eu acho que foi o da classe abstract. :shock:
Imagino a seguinte ordem:
essa é simpatica que quer tentar ?sem compilar ,de cara qual a resposta?
importjava.util.*;publicclassMain{staticvoidadd(Listu){System.out.println("com mais prioridade e \' "+u.peek());}publicstaticvoidmain(String[]args){Queuey=newLinkedList();y.offer(2);y.offer(12);y.offer(18);add(y);}}
1)nao compila
2)18
3)2
4)nao compila pela construcão do objeto polimorfica
5)o metodo offer nao existe
6)jogo a toalha
F
fabioEM
sei que é final de semana galera !vamos la!quem se arrisca?
Mauricio_Linhares
Não compila, a interface Queue não implementa a interface List.
enumPegadinha{A,B,C{},D{Stringx(intx){super.x(3);return" int ";}};Stringx(intx){out.println("Ah int");return"AH!!!!pegadinha do malandro!!";}Stringx(Integerx){out.println("Ah Integer");return"AH!!!!pegadinha do malandro!!";}}publicclassT{publicstaticvoidmain(String[]args){out.println(Pegadinha.D.x(9));}}
1)erro de compilacao
2)AH!!!pegadinha do malandro!!;
3)Ah int
4)Ah Integer
int
5)Ah int
int
}publicclassT{publicstaticvoidmain(String[]args){
out.println(Pegadinha.D.x(9));
}
}
Mauricio_Linhares
1, errod e compilação, não tem static import pra out.
F
fabioEM
Perfeito!!e se tivesse??qual seria o resultado fera?